我正在从 K&R 阅读 C 中的 union,据我了解,union 中的单个变量可以保存多种类型中的任何一种,如果某些内容作为一种类型存储并作为另一种类型提取,则结果纯粹是实现定义的。
现在请检查此代码段:
#include<stdio.h>
int main(void)
{
union a
{
int i;
char ch[2];
};
union a u;
u.ch[0] = 3;
u.ch[1] = 2;
printf("%d %d %d\n", u.ch[0], u.ch[1], u.i);
return 0;
}
输出:
3 2 515
在这里,我在 中分配值,但同时从和中u.ch
检索。是否定义了实现?还是我在做一些非常愚蠢的事情?u.ch
u.i
我知道对于大多数其他人来说,这可能看起来很初学者,但我无法弄清楚该输出背后的原因。
谢谢。