1.常规法
#include <stdio.h>
int main()
{
int a = 1; //0x00 00 00 01,如果是小端:01 00 00 00,如果是大端:00 00 00 01
if (*(char*)&a == 1)//取a的地址,强制类型转换成char*,就是只访问一个字节,再解引用如果是1 就是小端,不是1就是大端
//我们为的是拿出这四个字节的第一个字节,因为如果不转换成char*,&a是int*型,则直接访问4个字节,看不出区别
printf("小端\n");
else
printf("大端\n");
return 0;
}
//2.函数法:
#include <stdio.h>
int check_sys()
{
int a = 1;
if (*(char*)&a == 1)
return 1;//返回1表示小端
else
return 0;
}
int main()
{
int ret = check_sys();
if (ret == 1)
{
printf("小端\n");
}
else
printf("大端\n");
return 0;
}
//3.函数法简化版:
#include <stdio.h>
int check_sys()
{
int a = 1;
return *(char*)&a;
}
int main()
{
int ret = check_sys();
if (ret == 1)
{
printf("小端\n");
}
else
printf("大端\n");
return 0;
}