Tengo este fragmento de código y no sé cómo funciona.
#include <stdio.h>
int main(void)
{
int numero = ({const int i = 10; i+10;});
printf("%d\n", numero); // Prints 20
return 0;
}
¿Por qué si elimino la segunda parte (i+10;), el compilador recibe un error? ¿Por qué son necesarios los corchetes?
¡Gracias ^^!
Johannes Schaub – litb
Es un Expresión de sentencia GCC. Ejecuta las sentencias que contiene y devuelve el valor evaluado en la última sentencia. Por lo tanto numero
se inicializa a 20
. Si elimina la segunda parte, no hay expresión como la última declaración, por lo que no puede obtener un valor de la expresión de la declaración.
Las llaves son necesarias para eliminar la ambigüedad de las expresiones ordinarias entre paréntesis de C.
¿Ha sido útil esta solución?
Tu feedback nos ayuda a saber si la solución es correcta y está funcionando. De esta manera podemos revisar y corregir el contenido.