?
逗號運算符的作用:
1,起分隔符的作用:
定義變量用于分隔變量:int a,b
輸入或輸出時用于分隔輸出表列 printf("%d%d",a,b)
2,用于逗號表達式的順序運算符
語法:表達式1,表達式2,...,表達式n
表達式的值:表達式n的值
優先級:最低
運算順序:左->右
例題總結
錯題1
if(a>b, a>c) max=a;else max=0;t=(a=a+3,a/b,b+1,++c);
?
printf() 輸出 max 和 t 的值
max=3, t=2
解析:因為if語句中是一個逗號表達式,所以先計算a>b,結果為0,需要注意到這里的逗號是運算符而不是分隔符,然后再計算a>c,結果為1。進入條件中,把a的值3賦值給max;然后計算t的值,需要注意到這里的逗號是運算符而不是分隔符a+3賦值給a,a=6,然后a/b得到1,然后b的值為4,++c先自增然后賦值,結果為2。
?
錯題2
計算下面逗號表達式的值:
(a=2*4,a*5),a-3
?
在這個逗號表達式中,先計算括號內的值,從左到右,a被賦值為8,然后a*5是這個含括號的逗號表達式的值,然后在計算括號外的a-3,a-3等于5,所以說這個式子的結果為5.
注意分清一般表達式和賦值表達式。
?
錯題3
這兩個題目都是自增運算符與自減運算符和逗號運算符結合的題目,在測試中錯了兩道,
以i++為例:自增運算符的具體含義是:
1. 先進行i與其他運算符的運算
2.再執行i=i+1
?

答案:D
解析:里面含有順序運算符,首先計算a=3,然后b=a--,a的值先賦值給b,表達式的值為b,也就是x=b,然后a自減為2,所以x,a,b的值分別為3,2,3
?
答案:C
解析:先進行賦值 x=0 ,然后x+10,接著是x++,x先進行其他操作,也就是逗號運算符,然后再進行自增,所以結果為x=0.0
?