C語言逗號表達式


   優先級別最低,它將兩個及其以上的式子聯接起來,從左往右逐個計算表達式,整個表達式的值為最后一個表達式的值。

比如:(3+5,6+8)稱為逗號表達式,其求解過程先表達式1,后表達式2,整個表達式值是表達式2的值,如:(3+5,6+8)的值是14,a=(a=3*5,a*4)的值是60,而(a=3*5,a*4)的值是60, a的值是15。

 

逗號表達式本身不難,常常與 賦值運算符一起考,考查學生對這兩個知識點的理解和考生觀察是否細心。如下題:
題目:以下程序的輸出結果是:
main()
{
int x,y,z;
x=1;
y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
}
[A]2,3,3 [B]2,3,2 [C]2,3,1 [D]1,1,1
解析:
x和y的值經過自增以后分別為2和3,D可以排除。剩下3個選項選擇什么呢?
如果是(x++,y++,++y)實際上可以看成(1,1,3)整個逗號表達式的值應該是3,那么選A。
如果是(x++,++y,y++)實際上可以看成(1,2,2)整個逗號表達式的值應該是2,那么選B。
但這是錯的,這兒還有 賦值運算符。賦值運算符的優先級是14,而逗號表達式的優先級是15,也就是說上面的表達式中應該等價於這樣的結合:(z=x++),y++,++y;如果這樣寫的話,則答案很清晰,為:2,3,1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM