Анонимные блоки кода в 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 ответ:
Это выражение оператора .
Это расширение компилятора, поддерживаемое GCC, и оно не является стандартным C++, следовательно, оно не является портативным.
Если вы скомпилируете свой код с флагом-pedantic
, он скажет вам об этом.Это ответ мой говорит об этом подробно.