c - 为什么输出应该是垃圾却一直是 0 2 ?

标签 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?

最佳答案

当您刚刚告诉编译器初始化为 i512 时,我不确定为什么您期望编译器为您生成垃圾。 512 的最低两个有效字节是 02

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

关于c - 为什么输出应该是垃圾却一直是 0 2 ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24372801/

相关文章:

c - 优化/使用指针访问数组

c - printf 添加数字

c - 将二维数组从 Fortran 传递到 C

c - 结构错误中的 union

c++ - 增量联盟?

c++ - 调用不活跃的union成员的成员函数

c++ - 如何删除作为 C++ union 的成员变量的字符串对象?

c - 将内存动态分配给结构节点数组

c - 子程序中的 fprintf()

c++ - 读取与事件成员类型相同的非事件联盟成员是否定义明确?