#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?
最佳答案
当您刚刚告诉编译器初始化为 i
到 512
时,我不确定为什么您期望编译器为您生成垃圾。 512 的最低两个有效字节是 0
和 2
。
特定于实现的行为与垃圾不同。
关于c - 为什么输出应该是垃圾却一直是 0 2 ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24372801/