可能な重複に評価:
in what versions of c is a block inside parenthesis used to return a value valid?
これはなぜ有効なCですか? ---({123;})123
以下(これはGCCで動作する典型的なMAXマクロのタイプセーフなバージョンであります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:[2009年10月](http://stackoverflow.com/questions/1635549/in-what-versions-of-c-is-a-block-inside - 括弧で囲まれた - 戻り値 - 有効 - 有効)[2010年5月](http://stackoverflow.com/questions/2892981/weird-initialization-in-c)[1月2010](http:// stackoverflow .com/questions/2075930/more-information-on-c) –