2015-11-04 52 views
-3

我有這樣的C代碼行:如何C編譯器解釋下面的代碼序列

int a; 
a = (1, 2, 3); 

printf("%d", a); 

爲什麼打印的價值3? (最後一個)。

+3

我相信Google目前還沒有關閉 - 爲什麼不諮詢它的一些初學者的教程或語言引用,其中解釋操作符? –

+2

這是一個完全合法的新手問題。 –

+1

請參閱[逗號操作符','C在做什麼?](http://stackoverflow.com/q/52550/1708801) –

回答

2

逗號運算符評估其所有「成員」,但返回最後一個表達式的值。
從C11標準:

逗號操作者的左操作數被評價爲空隙 表達;在它的評估和右操作數的 之間有一個序列點。然後評估右操作數; 結果 有它的類型和價值。

+1

爲什麼這件事在C合法?這個花哨的語法是否有用? –

+1

@MariusMarusanici [This](http://stackoverflow.com/questions/52550/what-does-the-comma-operator-do-in-c)。 – Downvoter