1. 程式人生 > >C語言逗號運算子和逗號表示式基礎總結

C語言逗號運算子和逗號表示式基礎總結

 

逗號運算子的作用:

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