2014-09-28 35 views
-1

爲什麼分配值3?編譯器是否簡單地從列表中獲取最後一個值?編譯器在分配操作中如何工作?

int a; 
a=(1,2,3); 
printf("%d",a); 

編譯器如何解析此語句或它如何在內部工作?

+1

請參閱http://en.wikipedia.org/wiki/Comma_o​​perator。 – AlexD 2014-09-28 06:11:26

+0

閱讀有關逗號運算符C. – user1336087 2014-09-28 06:11:49

+0

因爲','(comman)是一個運算符,所以最後一個值將被賦值給a。 – Rustam 2014-09-28 06:13:25

回答

1

逗號(1,2,3)是一個逗號運算符。它被評估爲

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

逗號運算符是左關聯的。表達式(1,2,3)的結果/值是逗號運算符的右操作數的值。

0

正如評論中指出的那樣,這是因爲您使用的是comma operator。這意味着1和2被評估和丟棄。三者是唯一剩下要分配的東西。如果沒有括號,它很可能會被指定爲1.