为什么输出0 2应该是垃圾?

时间:2014-06-23 18:25:54

标签: c unions

#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,它应该是一些垃圾值?

1 个答案:

答案 0 :(得分:1)

当你刚刚告诉编译器初始化为i512时,我不确定为什么你希望编译器为你生成垃圾。 512的至少两个重要字节是02

特定于实现的行为与垃圾不同。