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



reglas de evaluacion de expresiones en programacion (1)

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.

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?





block