当变量与union相关联时,编译器会通过考虑最大内存的大小来分配内存.因此,union的大小等于最大成员的大小.所以这意味着改变任何成员的值将改变其他成员的价值.但是当我执行以下代码时
output: 4 5 7.000000
union job
{
int a;
struct data
{
double b;
int x
}q;
} w;
w.q.b=7;
w.a=4;
w.q.x=5;
printf("%d %d %f",w.a,w.q.x,w.q.b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
问题是,首先我分配a的值然后修改qx的值,然后a的值将被qx覆盖但是在输出中它仍然显示a的原始值以及qx的原始值我不能了解它为什么会发生?