c语言基础问题求解。

img


题目中说的a.u.x不是等于4吗,为什么结果是10?过程是什么?

这里考的是共用体的内存最大分布
你通过 struct 占用了8个字节
下面的 k 和 z 正好 4 + 4
当你给第二个4 字节赋值为10 的时候,z 就是10了
内存分布应该是 4 10,分别是4个字节

因为a是union是共用体,最近一次改变共用体的操作是a.z = 10,所以共用体中所有int都为10