有關逗號表達式
逗號表達式本身不難,常常與賦值運算符一起考,考查學生對這兩個知識點的理解和考生觀察是否細心。如下題:
題目:以下程序的輸出結果是:
main() { int x,y,z; x=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
正確答案選C。
注意:
c語言提供一種特殊的運算符,逗號運算符,優先級別最低,它將兩式聯接起來,如:(3+5,6+8)稱為逗號表達式,其求解過程先表達式1,後表達式2,整個表達式值是表達式2的值,如:(3+5,6+8)的值是14。(a=3*5,a*4)的值是60。
逗號表達式的形式如下:
表達式1,表達式2,表達式3,...... ,表達式n
逗號表達式的要領:
(1) 逗號表達式的運算過程為:從左往右逐個計算表達式。
(2) 逗號表達式作為一個整體,它的值為最後一個表達式(也即表達式n)的值。
(3) 逗號運算符的優先級別在所有運算符中最低。
最後更新:2017-04-03 18:51:55