C程序输出结果

来源:百度知道 编辑:UC知道 时间:2024/06/21 09:05:59
union myun
{struct
{int x,y,z;}u;
int k;
}a;
main()
{a.u.x=4;a.u.y=5;a.u.z=6;
a.k=0;
printf("%d\n",a.u.x);
}

以上程序输出结果为什么会是0,而不是4呢?

union myun
{
struct{int x,y,z;}u;
int k;
}a;
这里myun是联合体
struct{int x,y,z;}u; 和int k;占用同一个地址

main()
{
a.u.x=4;a.u.y=5;a.u.z=6;
a.k=0;
printf("%d\n",a.u.x);
}
虽然前面a.u.x=4;了,但a.k=0;的时候,把内存赋值为0了,导致a.u.x也为0了

你对你的结构体初始化了吗??没有对吧,那系统默认的就是0啊