逗號表示式

2022-05-23 08:51:12 字數 1126 閱讀 1050

1. 函式呼叫exec((v1,v2), (v3,v4), v5, v6)中,實參的個數是:

a) 3

b) 4

c) 5

d) 6

分析:函式原型exec((v1,v2), (v3,v4), v5, v6);

用括號括起來的兩個形參組成是乙個逗號運算子組成的表示式

c語言中逗號運算子返回最後乙個引數作為表示式的值

所以(v1,v2)和(v3,v4)是兩個逗號表示式,相當於兩個實參

所以一共4個引數。

逗號表示式:

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) 逗號運算子的優先級別在所有運算子中最低。

例題:逗號表示式本身不難,常常與賦值運算子一起考,考查學生對這兩個知識點的理解和考生觀察是否細心。如下題:

題目:以下程式的輸出結果是:

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 逗號表示式的求解過程是 先求解表示式1,再求解表示式2。整個逗號表示式的值是表示式2的值。例如,上面的逗號表示式 3 5,6 8 ...

逗號表示式

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

逗號表示式

define a b,c 表示式1,表示式2,表示式3,表示式n 逗號表示式的要領 1 逗號表示式的運算過程為 從左往右逐個計算表示式。2 逗號表示式作為乙個整體,它的值為最後乙個表示式 也即表示式n 的值。3 逗號運算子的優先級別在所有運算子中最低。c語言提供一種特殊的運算子,逗號運算子,優先級別...