还是c语言共用体的问题

来源:百度知道 编辑:UC知道 时间:2024/07/02 19:23:45
union myun
{
struct
{
int x;
int y;
int z;
}u;
int k;
}a;

main()
{
a.u.x=4;
a.u.y=5;
a.u.z=6;
a.k=0;
printf("\n%d\n",a.u.x);
}
结果又怎么是:0
请仔细回答,谢谢!

共用体的所有数共用一个存储单元。存储单元中数值为最后一个赋值的数,
你在其中 a.k=0 ,也就是共用体中的值为0。

这是存储方式决定的, a.k和 a.u.x占用相同的存储单元,所以后面赋值的会改掉前面的赋值。