我偶然发现了一段基于C语言联合体的代码。以下是代码:
union {
struct {
char ax[2];
char ab[2];
} s;
struct {
int a;
int b;
} st;
} u ={12, 1};
printf("%d %d", u.st.a, u.st.b);
我不太理解为什么输出是268 0
,值是如何初始化的?这里联合体起作用了吗?输出难道不应该是12 1
吗?如果有人可以详细解释一下正在发生什么,那就太好了。
我正在使用32位处理器和Windows 7操作系统。
st
而不是s
呢? - Christian Rau