Анонимные блоки кода в C


Что означает подобное утверждение ?

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

Он компилируется и выполняется эквивалентно:

int x;
scanf( "%d", &x );
Это похоже на какой-то анонимный вызов функции или что-то в этом роде, но я не уверен. Я никогда раньше не сталкивался с такими утверждениями, как ({}), и я не могу найти никаких объяснений в интернете. Любая помощь будет очень признательна, СПАСИБО:)

Контекст:

Это код, который вы получаете при развертывании макросов в следующем коде :

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

Это код, используемый кем-то в соревновании по программированию.

1 4

1 ответ:

Это выражение оператора .
Это расширение компилятора, поддерживаемое GCC, и оно не является стандартным C++, следовательно, оно не является портативным.
Если вы скомпилируете свой код с флагом -pedantic, он скажет вам об этом.

Это ответ мой говорит об этом подробно.