4

このようなステートメントはどういう意味ですか?

int x  = ( { int a; scanf( "%d", &a ); a ; } ) ;

コンパイルして実行するのは:と同等です。

int x;
scanf( "%d", &x );

なんらかの匿名関数呼び出しのようなもののようですが、よくわかりません。私は以前のような声明に出くわしたことが({})なく、オンラインで説明を見つけることができません。どんな助けでも大歓迎です、ありがとう:)

コンテクスト:

これは、次のコードのマクロが展開されたときに取得するコードです。

#define SI ({int a;scanf("%d",&a);a;});
int x = SI;

これは、プログラミングコンテストで誰かが使用するコードです。

4

1 に答える 1

7

ステートメント式です
これはGCCでサポートされているコンパイラ拡張機能であり、標準C ++ではないため、移植性がありません。
フラグを使用してコードをコンパイルすると、その-pedanticように通知されます。

私のこの答えはそれについて詳細に話します。

于 2011-10-27T06:42:51.540 に答える