Если struct a a1 = {0};
инициализирует все элементы (разных типов) структуры равными нулю, то struct a a2 = {5};
должен инициализировать ее как 5
.. no?
#include <stdio.h>
typedef struct _a {
int i;
int j;
int k;
}a;
int main(void)
{
a a0;
a a1 = {0};
a a2 = {5};
printf("a0.i = %d \n", a0.i);
printf("a0.j = %d \n", a0.j);
printf("a0.k = %d \n", a0.k);
printf("a1.i = %d \n", a1.i);
printf("a1.j = %d \n", a1.j);
printf("a1.k = %d \n", a1.k);
printf("a2.i = %d \n", a2.i);
printf("a2.j = %d \n", a2.j);
printf("a2.k = %d \n", a2.k);
return 0;
}
Неинициализированная структура содержит значения мусора
a0.i = 134513937
a0.j = 134513456
a0.k = 0
Инициализированная в 0
структура содержит все элементы, инициализированные в 0
a1.i = 0
a1.j = 0
a1.k = 0
Инициализированная структура 5
содержит только первый элемент, инициализированный 5
, а остальные элементы инициализированы 0
.
a2.i = 5
a2.j = 0
a2.k = 0
Будет ли a2.j
и a2.k
всегда гарантированно инициализироваться до 0
в течение a a2 = {5};
(или), если это undefined behavior
OTOH, почему я не вижу все элементы s2
, инициализированные в 5
. Как инициализация struct
выполняется во время {0}
и чем она отличается при использовании {5}
?