使用32位编译情况下,给出判断所使用机器大小端的方法。
联合体方法判断方法:利用union结构体的从低地址开始存,且同一时间内只有一个成员占有内存的特性。
下面的代码,a和b都是从低地址开始存的,也就是说,a要么是小端那种要么是大端那种存法,而b就要么是01,要么是00(低地址char),这个时候只需要判断b的值就可以知道机器的大小端了。
(大端储存符合阅读习惯。联合体占用内存是最大的那个,和结构体不一样。a和c公用同一片内存区域,所以更改c,必然会影响a的数据)
#include<stdio.h>
int main()
{
union w
{
int a;
char b;
}c;
c.a = 1;
if(c.b == 1)
printf("小端存储\n");
else printf("大端存储\n");
return 0;
}
代码示例转(略作解释和学习记录):
原文链接:https://blog.csdn.net/m0_46152793/article/details/124110908