Asignación de elementos de matriz en la inicialización de matriz [duplicado]
Esta pregunta ya tiene una respuesta aquí:
Confusión sobre la inicialización de la matriz en C 7 respuestasConsidere el siguiente programa simple:
#include <stdio.h>
int main(void)
{
int a[5] = { a[2] = 1 };
printf("%d %d %d %d %d\n", a[0], a[1],a[2], a[3], a[4]);
}
Con GCC 7.3.0 esto genera
1 0 1 0 0
Teniendo en cuenta quea[1]
es cero, parece que la inicialización es similar a
int a[5] = { 1 };
a[2] = 1;
La pregunta es: si bien los inicializadores podrían ser cualquier expresión genérica, ¿en qué orden se realizan la inicialización y las asignaciones?
¿Es esto incluso válido y bien definido? ¿Podría ser definido por la implementación, indefinido o quizás no especificado?
Esta pregunta está relacionada con la pregunta Confusión sobre la inicialización de la matriz en C.