#include<stdio.h>
int main()
{
union a
{
int i;
char ch[2];
};
union a z = {512};
printf("%d %d",z.ch[0],z.ch[1]);
return 0;
}
输出为:0 2
为什么输出0 2,它应该是一些垃圾值?
答案 0 :(得分:1)
当你刚刚告诉编译器初始化为i
到512
时,我不确定为什么你希望编译器为你生成垃圾。 512的至少两个重要字节是0
和2
。
特定于实现的行为与垃圾不同。