C語言逗號表示式

2021-08-23 12:10:29 字數 682 閱讀 9750

c語言提供一種特殊的運算子,逗號運算子,優先級別最低,它將兩式聯接起來,如:(3+5,6+8)稱為逗號表示式,其求解過程先表示式1,後表示式2,整個表示式值是表示式2的值,如:(3+5,6+8)的值是14,(a=3*5,a*4)的值是60,原因在於賦值運算優先順序高於逗號表示式。

逗號表示式的要領:

1.從左到右逐個計算;

2.逗號表示式作為乙個整體,它的值為最後乙個表示式的值;

3. 逗號表示式的優先級別在所有運算子中最低。

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語言 逗號表示式

c語言提供一種特殊的運算子 逗號運算子。用它將兩個表示式連線起來。如 3 5,6 8 稱為逗號表示式,又稱為 順序求值運算子 逗號表示式的一般形式為 表示式1,表示式2 逗號表示式的求解過程是 先求解表示式1,再求解表示式2。整個逗號表示式的值是表示式2的值。例如,上面的逗號表示式 3 5,6 8 ...

C語言逗號表示式

c語言提供一種特殊的運算子,逗號運算子,優先級別最低,它將兩式聯接起來,如 3 5,6 8 稱為逗號表示式,其求解過程先表示式1,後表示式2,整個表示式值是表示式2的值,如 3 5,6 8 的值是14,a 3 5,a 4 的值是60,原因在於賦值運算優先順序高於逗號表示式。逗號表示式的要領 1.從左...

C語言基礎 關於逗號表示式

之前有個同學問了我乙個 include intmain 這個 的執行結果如下 可以看到,輸出的結果是6,也就是b的值,所以是為什麼呢,只有乙個 d但是卻先輸出了右邊的值,我們去掉括號做乙個對比。可以看到輸出的是3,也就是a的值。這就是c語言中乙個有趣的運算子,逗號表示式,注意是 運算子。它的優先順序...