1.题目
写一个程序实现大/小端序的判断
2.前置知识
3.代码
方案一
对于单个变量,判断存储的第一个字节
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a = 2;
if ((*(char*)&a) == 2)
printf("小端序");
else
printf("大端序");
return 0;
}
代码的关键是强制类型转换为char*! 只取前1个字节就可判断
方案二
对于联合体,另外设一个char类型的变量,从而在多个字节中只判断第一个字节
#include <stdio.h>
int check_endian()
{
union U
{
char a;
int b;
}un;
un.b = 1;
//返回联合体的第一个字节
return un.b;
}
int main()
{
int ret = check_endian();
if (ret)
printf("小端");
else
printf("大端");
return 0;
}