如果struct a a1 = {0};
将结构的所有元素(不同类型)初始化为零,那么struct a a2 = {5};
应将其初始化为5
。否?“struct a a1 = {0};”不同于“struct a a2 = {5};”为什么?
#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
始终保证期间a a2 = {5};
初始化到0
(或)是一个undefined behavior
OTOH,为什么我没有看到初始化5
的的s2
所有元素。在{0}
期间struct
初始化如何完成?当使用{5}
时,它是如何不同的?
” ......应该对其进行初始化到5 ..没有?!“ 简短回答:第 – hirschhornsalz 2012-01-05 16:03:08