Confusión sobre la inicialización de la matriz en C

En lenguaje C, si inicializa una matriz como esta:

int a[5] = {1,2};

then todos los elementos de la matriz que no se inicializan explícitamente se inicializarán implícitamente con ceros.

Pero, si inicializo una matriz como esta:

int a[5]={a[2]=1};

printf("%d %d %d %d %d\n", a[0], a[1],a[2], a[3], a[4]);

salida

1 0 1 0 0

No entiendo, ¿por quéa[0] impresión1 en lugar de0? ¿Es un comportamiento indefinido?

Nota Esta pregunta se hizo en una entrevista.

Respuestas a la pregunta(7)

Su respuesta a la pregunta