字符串常量是由一對(duì)雙引號(hào)括起的字符序列。例如: "CHINA" ,"C program:" , "$12.5" 等都是合法的字符串常量。字符串常量和字符常量是不同的量。它們之間主要有以下區(qū)別:
1.字符常量由單引號(hào)括起來,字符串常量由雙引號(hào)括起來。
2.字符常量只能是單個(gè)字符,字符串常量則可以含一個(gè)或多個(gè)字符。
這是與BASIC 語言不同的。但是可以用一個(gè)字符數(shù)組來存放一個(gè)字符串常量。在數(shù)組一章內(nèi)予以介紹。
’a’在內(nèi)存中占一個(gè)字節(jié),可表示為:a
符號(hào)常量
在C語言中,可以用一個(gè)標(biāo)識(shí)符來表示一個(gè)常量,稱之為符號(hào)常量。符號(hào)常量在使用之前必須先定義,其一般形式為:
#define 標(biāo)識(shí)符 常量
其中#define也是一條預(yù)處理命令(預(yù)處理命令都?quot;#"開頭),稱為宏定義命令(在第九章預(yù)處理程序中將進(jìn)一步介紹),其功能是把該標(biāo)識(shí)符定義為其后的常量值。一經(jīng)定義,以后在程序中所有出現(xiàn)該標(biāo)識(shí)符的地方均代之以該常量值。習(xí)慣上符號(hào)常量的標(biāo)識(shí)符用大寫字母,變量標(biāo)識(shí)符用小寫字母,以示區(qū)別。
#define PI 3.14159
void main()
{
float s,r;
r=5;
s=PI*r*r;
printf("s=%f\n",s);
}
由宏定義命令定義PI 為3.14159 s,r定義為實(shí)數(shù) 5->r PI*r*r->s
顯示程序結(jié)果 float s,r; r=5; s=PI*r*r; 本程序在主函數(shù)之前由宏定義命令定義PI 為3.14159,在程序中即以該值代替PI 。s=PI*r*r等效于s=3.14159*r*r。應(yīng)該注意的是,符號(hào)常量不是變量,它所代表的值在整個(gè)作用域內(nèi)不能再改變。也就是說,在程序中,不能再用賦值語句對(duì)它重新賦值。
變量的初值和類型轉(zhuǎn)換
變量賦初值
類型說明符 變量1= 值1,變量2= 值2,……; 例如:
int a=b=c=5;
float x=3.2,y=3f,z=0.75;
char ch1=’K’,ch2=’P’;
應(yīng)注意,在說明中不允許連續(xù)賦值,如a=b=c=5是不合法的。
void main()
{
int a=3,b,c=5;
b=a+c;
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
a<---3,b<--0,c<---5
b<--a+c
顯示程序運(yùn)行結(jié)果
變量類型的轉(zhuǎn)換
自動(dòng)轉(zhuǎn)換
自動(dòng)轉(zhuǎn)換發(fā)生在不同數(shù)據(jù)類型的量混合運(yùn)算時(shí),由編譯系統(tǒng)自動(dòng)完成。自動(dòng)轉(zhuǎn)換遵循以下規(guī)則:
1.若參與運(yùn)算量的類型不同,則先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算。
2.轉(zhuǎn)換按數(shù)據(jù)長(zhǎng)度增加的方向進(jìn)行,以保證精度不降低。如int型和long型運(yùn)算時(shí),先把int量轉(zhuǎn)成long型后再進(jìn)行運(yùn)算。
4.char型和short型參與運(yùn)算時(shí),必須先轉(zhuǎn)換成int型。
void main()
{
float PI=3.14159;
int s,r=5;
s=r*r*PI;
printf("s=%d\n",s);
}
PI<--3.14159
s<--0,r<--5
s<--r*r*PI
顯示程序運(yùn)行結(jié)果
float PI=3.14159;
int s,r=5;
s=r*r*PI;
強(qiáng)制類型轉(zhuǎn)換
強(qiáng)制類型轉(zhuǎn)換是通過類型轉(zhuǎn)換運(yùn)算來實(shí)現(xiàn)的。其一般形式為: (類型說明符) (表達(dá)式) 其功能是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說明符所表示的類型。例如: (float) a 把a(bǔ)轉(zhuǎn)換為實(shí)型(int)(x+y) 把x+y的結(jié)果轉(zhuǎn)換為整型在使用強(qiáng)制轉(zhuǎn)換時(shí)應(yīng)注意以下問題:
1.類型說明符和表達(dá)式都必須加括號(hào)(單個(gè)變量可以不加括號(hào)),如把(int)(x+y)寫成(int)x+y則成了把x轉(zhuǎn)換成int型之后再與y相加了。
2.無論是強(qiáng)制轉(zhuǎn)換或是自動(dòng)轉(zhuǎn)換,都只是為了本次運(yùn)算的需要而對(duì)變量的數(shù)據(jù)長(zhǎng)度進(jìn)行的臨時(shí)性轉(zhuǎn)換,而不改變數(shù)據(jù)說明時(shí)對(duì)該變量定義的類型。
main()
{
float f=5.75;
printf("(int)f=%d,f=%f\n",(int)f,f);
}
f<--5.75
將float f強(qiáng)制轉(zhuǎn)換成int f float f=5.75;printf("(int)f=%d,f=%f\n",(int)f,f); 本例表明,f雖強(qiáng)制轉(zhuǎn)為int型,但只在運(yùn)算中起作用, 是臨時(shí)的,而f本身的類型并不改變。因此,(int)f的值為 5(刪去了小數(shù))而f的值仍為5.75。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |