#c #gcc #gcc-warning
#c
Вопрос:
У меня есть этот фрагмент кода, и я не знаю, как он работает
#include <stdio.h>
int main(void)
{
int numero = ({const int i = 10; i 10;});
printf("%dn", numero); // Prints 20
return 0;
}
Почему, если я удаляю вторую часть (i 10;), компилятор выдает ошибку?
Зачем нужны скобки?
Спасибо ^^!
Ответ №1:
Это выражение оператора GCC. Он выполняет инструкции в нем и возвращает значение, вычисленное в последнем операторе. Таким образом numero
, инициализируется 20
. Если вы удалите вторую часть, в качестве последнего оператора не будет выражения, поэтому он не сможет получить значение из выражения оператора.
Фигурные скобки необходимы, чтобы отличить его от обычных выражений, заключенных в скобки.