小编Div*_*lla的帖子

C中结合的结构

当变量与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的原始值我不能了解它为什么会发生?

c structure unions

4
推荐指数
2
解决办法
1928
查看次数

标签 统计

c ×1

structure ×1

unions ×1