kasumi_official 发表于 2022-11-7 16:21:14

关于共用体的问题

想问下大佬们为什么c会输出2呀

#include <stdio.h>

void main()
{
        union {
                int i;
                char c;
        }r, * s = &r;
        s->i = 0x28D;
        printf("%x\n", s->c);
}

jackz007 发表于 2022-11-7 16:27:37

本帖最后由 jackz007 于 2022-11-7 16:31 编辑

      我们使用的 PC 电脑采用 Intel CPU 架构,数字在内存中按照 Little - Endian 模式存放,整型数 0x28d 在内存中是按照8D 02 00 00 的顺序排列的,所以,s -> c = 0x8D,s -> c = 0x02,s -> c = 0x00,s -> c = 0x00。

kasumi_official 发表于 2022-11-7 16:31:38

jackz007 发表于 2022-11-7 16:27
我们的电脑采用 Intel CPU 架构,数字在内存中按照 Little - Endian 编码存放,整型数 0x28d 在内存 ...

谢谢大佬解惑!!
页: [1]
查看完整版本: 关于共用体的问题