2013-02-16 63 views
14

請給我解釋一下這個程序的輸出:請說明逗號運算符在本計劃

int main() 
{  
    int a,b,c,d; 
    a=10; 
    b=20; 
    c=a,b; 
    d=(a,b); 
    printf("\nC= %d",c); 
    printf("\nD= %d",d); 
} 

這我得到的輸出是:

C= 10 
D= 20 

我的疑問是什麼是「」運營商在這裏做?
我使用代碼塊編譯並運行程序。

+0

可能重複的[什麼逗號運算符\',\'在C嗎?](http://stackoverflow.com/questions/52550/what-does-the-comma-operator-do-in-c) – 2015-07-09 13:04:44

回答

23

,運算符評估一系列表達式並返回最後一個值。

c=a,b(c=a),b相同。這就是爲什麼c是10

c=(a,b)將分配結果a,b,這是20,到c

麥克在評論中指出,分配(=)具有比逗號

+2

+和'='具有比','更高的優先級。 – 2013-02-16 14:50:31

+0

@Eduardo +1但是,儘管'd =(a,b)'的答案有點清楚,但是在你的解釋中補充說,你的答案會完成 – exexzian 2013-02-16 14:57:02

+0

@sansix:好點;只是添加了它;謝謝 – Eduardo 2013-02-16 14:58:48

4

逗號運算符評估其所有操作數,然後生成最後一個表達式的值。

11

那麼更高的優先級,這是運算符優先級:

c=a,b 

相當於

(c=a),b 

重點是,「,」運算符將r剔除第二個值。

因此

c=a,b 

分配到c,並返回b

d=(a,b) 

返回B和其分配到d的