#includestdiohint mainint argc char const argv union short i; char a2; u; ua0 = 0x11; ua1 = 0x22; printf0xxn ui; return 0;输出结果是为什么小端还是大端如何判断
输出结果是0x2211。这是因为联合体u中的两个成员变量共用同一段内存空间。在赋值时,将0x11赋值给u.a[0],将0x22赋值给u.a[1],而在内存中,这两个字节的存储顺序是从低地址到高地址,即u.a[0]存储在低地址,u.a[1]存储在高地址。
因此,以short类型访问u.i时,会将低地址的字节u.a[0]作为最低有效字节,高地址的字节u.a[1]作为次低有效字节,因此输出结果为0x2211。
关于端序,可以通过访问联合体中的不同字节来判断。如果低地址的字节存储在低地址,即u.a[0]存储在低地址,那么就是小端序;如果高地址的字节存储在低地址,即u.a[1]存储在低地址,那么就是大端序。在这个例子中,由于u.a[0]存储在低地址,所以是小端序。
原文地址: https://www.cveoy.top/t/topic/iBA2 著作权归作者所有。请勿转载和采集!