如果賦值運(yùn)算符兩邊的數(shù)據(jù)類型不相同, 系統(tǒng)將自動(dòng)進(jìn)行類型轉(zhuǎn)換,即把賦值號(hào)右邊的類型換成左邊的類型。具體規(guī)定如下:
1.實(shí)型賦予整型,舍去小數(shù)部分。前面的例2.9已經(jīng)說明了這種情況。
2.整型賦予實(shí)型,數(shù)值不變,但將以浮點(diǎn)形式存放, 即增加小數(shù)部分(小數(shù)部分的值為0)。
3.字符型賦予整型,由于字符型為一個(gè)字節(jié), 而整型為二個(gè)字節(jié),故將字符的ASCII碼值放到整型量的低八位中,高八位為0。 來源:www.examda.com
4.整型賦予字符型,只把低八位賦予字符量。
void main(){
int a,b=322;
float x,y=8.88;
char c1=’k’,c2;
a=y;
x=b;
a=c1;
c2=b;
printf("%d,%f,%d,%c",a,x,a,c2);
}
int a,b=322;
float x,y=8.88;
char c1=’k’,c2;
printf("%d,%f,%d,%c",a=y,x=b,a=c1,c2=b);
本例表明了上述賦值運(yùn)算中類型轉(zhuǎn)換的規(guī)則。a為整型,賦予實(shí)型量y值888后只取整數(shù)8。x為實(shí)型,賦予整型量b值322, 后增加了小數(shù)部分。字符型量c1賦予a變?yōu)檎停土縝賦予c2 后取其低八位成為字符型(b的低八位為01000010,即十進(jìn)制66,按ASCII碼對(duì)應(yīng)于字符B)。
復(fù)合賦值符及表達(dá)式
在賦值符“=”之前加上其它二目運(yùn)算符可構(gòu)成復(fù)合賦值符。如
+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=。 構(gòu)成復(fù)合賦值表達(dá)式的一般形式為: 變量 雙目運(yùn)算符=表達(dá)式 它等效于 變量=變量 運(yùn)算符 表達(dá)式 例如: a+=5 等價(jià)于a=a+5 x*=y+7 等價(jià)于x=x*(y+7) r%=p 等價(jià)于r=r%p
復(fù)合賦值符這種寫法,對(duì)初學(xué)者可能不習(xí)慣, 但十分有利于編譯處理,能提高編譯效率并產(chǎn)生質(zhì)量較高的目標(biāo)代碼。逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式在
逗號(hào)運(yùn)算符
C語(yǔ)言中逗號(hào)“,”也是一種運(yùn)算符,稱為逗號(hào)運(yùn)算符。 其功能是把兩個(gè)表達(dá)式連接起來組成一個(gè)表達(dá)式, 稱為逗號(hào)表達(dá)式。
其一般形式為: 表達(dá)式1,表達(dá)式2 其求值過程是分別求兩個(gè)表達(dá)式的值,并以表達(dá)式2的值作為整個(gè)逗號(hào)表達(dá)式的值。
void main(){
int a=2,b=4,c=6,x,y;
x=a+b,y=b+c;
printf("y=%d,x=%d",y,x);
}
a<--2,b<--4,c<--6,x<--0,y<--0
x<--a+b,y<---b+c
本例中,y等于整個(gè)逗號(hào)表達(dá)式的值,也就是表達(dá)式2的值,x是第一個(gè)表達(dá)式的值。對(duì)于逗號(hào)表達(dá)式還要說明兩點(diǎn):
1.逗號(hào)表達(dá)式一般形式中的表達(dá)式1和表達(dá)式2 也可以又是逗號(hào)表達(dá)式。例如: 表達(dá)式1,(表達(dá)式2,表達(dá)式3) 形成了嵌套情形。因此可以把逗號(hào)表達(dá)式擴(kuò)展為以下形式: 表達(dá)式1,表達(dá)式2,…表達(dá)式n 整個(gè)逗號(hào)表達(dá)式的值等于表達(dá)式n的值。 來源:www.examda.com
2.程序中使用逗號(hào)表達(dá)式,通常是要分別求逗號(hào)表達(dá)式內(nèi)各表達(dá)式的值,并不一定要求整個(gè)逗號(hào)表達(dá)式的值。
1.實(shí)型賦予整型,舍去小數(shù)部分。前面的例2.9已經(jīng)說明了這種情況。
2.整型賦予實(shí)型,數(shù)值不變,但將以浮點(diǎn)形式存放, 即增加小數(shù)部分(小數(shù)部分的值為0)。
3.字符型賦予整型,由于字符型為一個(gè)字節(jié), 而整型為二個(gè)字節(jié),故將字符的ASCII碼值放到整型量的低八位中,高八位為0。 來源:www.examda.com
4.整型賦予字符型,只把低八位賦予字符量。
void main(){
int a,b=322;
float x,y=8.88;
char c1=’k’,c2;
a=y;
x=b;
a=c1;
c2=b;
printf("%d,%f,%d,%c",a,x,a,c2);
}
int a,b=322;
float x,y=8.88;
char c1=’k’,c2;
printf("%d,%f,%d,%c",a=y,x=b,a=c1,c2=b);
本例表明了上述賦值運(yùn)算中類型轉(zhuǎn)換的規(guī)則。a為整型,賦予實(shí)型量y值888后只取整數(shù)8。x為實(shí)型,賦予整型量b值322, 后增加了小數(shù)部分。字符型量c1賦予a變?yōu)檎停土縝賦予c2 后取其低八位成為字符型(b的低八位為01000010,即十進(jìn)制66,按ASCII碼對(duì)應(yīng)于字符B)。
復(fù)合賦值符及表達(dá)式
在賦值符“=”之前加上其它二目運(yùn)算符可構(gòu)成復(fù)合賦值符。如
+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=。 構(gòu)成復(fù)合賦值表達(dá)式的一般形式為: 變量 雙目運(yùn)算符=表達(dá)式 它等效于 變量=變量 運(yùn)算符 表達(dá)式 例如: a+=5 等價(jià)于a=a+5 x*=y+7 等價(jià)于x=x*(y+7) r%=p 等價(jià)于r=r%p
復(fù)合賦值符這種寫法,對(duì)初學(xué)者可能不習(xí)慣, 但十分有利于編譯處理,能提高編譯效率并產(chǎn)生質(zhì)量較高的目標(biāo)代碼。逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式在
逗號(hào)運(yùn)算符
C語(yǔ)言中逗號(hào)“,”也是一種運(yùn)算符,稱為逗號(hào)運(yùn)算符。 其功能是把兩個(gè)表達(dá)式連接起來組成一個(gè)表達(dá)式, 稱為逗號(hào)表達(dá)式。
其一般形式為: 表達(dá)式1,表達(dá)式2 其求值過程是分別求兩個(gè)表達(dá)式的值,并以表達(dá)式2的值作為整個(gè)逗號(hào)表達(dá)式的值。
void main(){
int a=2,b=4,c=6,x,y;
x=a+b,y=b+c;
printf("y=%d,x=%d",y,x);
}
a<--2,b<--4,c<--6,x<--0,y<--0
x<--a+b,y<---b+c
本例中,y等于整個(gè)逗號(hào)表達(dá)式的值,也就是表達(dá)式2的值,x是第一個(gè)表達(dá)式的值。對(duì)于逗號(hào)表達(dá)式還要說明兩點(diǎn):
1.逗號(hào)表達(dá)式一般形式中的表達(dá)式1和表達(dá)式2 也可以又是逗號(hào)表達(dá)式。例如: 表達(dá)式1,(表達(dá)式2,表達(dá)式3) 形成了嵌套情形。因此可以把逗號(hào)表達(dá)式擴(kuò)展為以下形式: 表達(dá)式1,表達(dá)式2,…表達(dá)式n 整個(gè)逗號(hào)表達(dá)式的值等于表達(dá)式n的值。 來源:www.examda.com
2.程序中使用逗號(hào)表達(dá)式,通常是要分別求逗號(hào)表達(dá)式內(nèi)各表達(dá)式的值,并不一定要求整個(gè)逗號(hào)表達(dá)式的值。