reglas programacion operadores lenguaje informatica expresiones evaluacion ejemplos aritmeticas c++ return expression block

c++ - lenguaje - operadores y expresiones en programacion



¿Cómo “()” convierte las declaraciones en expresiones en C++? (1)

Tengo el siguiente código:

int main() { int i=0; int j=({int k=3;++i;})+1; // this line return 0; }

Se compila y corre. Si quito el () de "esta línea", entonces no se compila.

Solo tengo curiosidad por saber qué regla de sintaxis se aplica aquí.

La {} contiene 2 declaraciones, y la última instrucción indica el valor de "retorno" de este bloque de código. Entonces, ¿por qué necesita un par extra () para que este valor de retorno sea utilizable?


Esa es una expresión de declaración , y es una extensión específica de GCC.

De la referencia enlazada:

Una declaración compuesta entre paréntesis puede aparecer como una expresión en GNU C. Esto le permite usar bucles, interruptores y variables locales dentro de una expresión.

Una declaración compuesta es un bloque de instrucciones encerrado de llaves.