可能重複:
in what versions of c is a block inside parenthesis used to return a value valid?爲什麼這個有效的C? ---({123;})的計算結果爲123
下面是一個典型的MAX宏的類型安全版本(這適用於GCC 4.4.5):
#define max(a,b) \
({ __typeof__ (a) _a = (a); \
__typeof__ (b) _b = (b); \
_a > _b ? _a : _b; })
在這裏,我們看到這個表情,MAX(A,b)返回表達式的結果
_a > _b ? _a : _b;
即使此表達式在塊中。所以,我調查,發現這是有效的C:
int a = ({123;}); // a is 123
有人可以解釋爲什麼這是有效的語法什麼的({語句})是真正的行爲嗎?另外,您會注意到{123;}不是有效的表達式,但只有({123;})。
Dupes:[Oct 2009](http://stackoverflow.com/questions/1635549/in-what-versions-of-c-is-a-block-inside -parenthesis-used-to-return-a-value-valid)[2010年5月](http://stackoverflow.com/questions/2892981/weird-initialization-in-c)[2010年1月](http:// stackoverflow .com/questions/2075930/more-information-on-in-c) – 2010-12-18 00:12:30