c – 工会概念的混乱

#include<stdio.h>

union node {
     int i;
     char c[2];
};

main() {

    union node n;
    n.c[0] = 0;
    n.c[1] = 2;
    printf("%d\n",n.i);
    return 0;
}

我认为它给出512输出因为第一个字节中的c [0]值存储而第二个字节中存储了c [1]值,但是给出了1965097472.为什么?
我在windows中的codeblocks中编译了这个程序.

解决方法

你的联盟分配了四个字节,从以下开始:

[????] [????] [????] [????]

您设置至少两个重要字节:

[????] [????] [0x02] [0x00]

然后,您将所有四个字节打印为整数.你不一定会得到512,因为任何东西都可以在那些最重要的两个字节中.在这种情况下,你有:

[0x75] [0x21] [0x02] [0x00]

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...