逗號表達(dá)式有值和類型嗎
在C語言中,逗號 “,”也是一種運算符,稱為逗號運算符。其功能是把兩個表達(dá)式連接起來組成一個表達(dá)式,稱為逗號表達(dá)式。
其一般形式為:
表達(dá)式1,表達(dá)式2
其求值過程是分別求兩個表達(dá)式的值,并以表達(dá)式2的值作為整個逗號表達(dá)式的值。
【例3.35】若x和y都是int型變量,x=100,y=200,且有下面的程序片段:
printf("%d",(x,y));
上面程序片段的輸出結(jié)果是 ( )。
A.200 B.100 C.100200 D.輸出格式符不夠,輸出不確定的值
本例中,y等于整個逗號表達(dá)式 (x,y)的值,也就是200,因此輸出為200。
【例3.36】
main()
{inta=2,b=4,c=6,x,y;
y=(x=a+b),(b+c);
printf("y=%d,x=%d",y,x);
}
本例中,y等于整個逗號表達(dá)式的值,也就是表達(dá)式2的值,x是第一個表達(dá)式的值。
【例3.37】設(shè)有如下程序段:
intx=2002,y=2003;
printf("%d\n",(x,y));
則以下敘述中正確的是 ( )。
A.輸出語句中格式說明符的個數(shù)少于輸出項的個數(shù),不能正確輸出
B.運行時產(chǎn)生出錯信息
C.輸出值為2002
D.輸出值為2003
本例中,y等于整個逗號表達(dá)式 (x,y)的值,也就是要輸出的值,因此答案為D。
【例3.38】有以下程序:
main()
{inta=666,b=888;
printf("%d\n",a,b);
}
程序運行后的輸出結(jié)果是 ( )。
A.錯誤信息 B.666 C.888 D.666,888
注意此題和上個例題的不同,答案為B。
對于逗號表達(dá)式,還要說明兩點:
①逗號表達(dá)式一般形式中的表達(dá)式1和表達(dá)式2也可以是逗號表達(dá)式。
例如:
表達(dá)式1,(表達(dá)式2,表達(dá)式3)
由此形成了嵌套情形。因此,可以把逗號表達(dá)式擴展為以下形式:
表達(dá)式1,表達(dá)式2,…,表達(dá)式n
整個逗號表達(dá)式的值等于表達(dá)式n的值。
②程序中使用逗號表達(dá)式,通常分別求逗號表達(dá)式內(nèi)各表達(dá)式的值,并不一定要求整個逗號表達(dá)式的值。
并不是在所有出現(xiàn)逗號的地方都組成逗號表達(dá)式,如在變量說明中,函數(shù)參數(shù)表中逗號只是用作各變量之間的間隔符。
免責(zé)聲明:以上內(nèi)容源自網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請告知,我們將盡快刪除相關(guān)內(nèi)容。