使用 union 判断系统大小端
- 大小端介绍
- 字节序
- 内存布局
- 小端
- 大端
- 确定大小端的方法
- union
- 指针
大小端介绍
字节序
内存布局
栈空间向低地址生长,堆空间向高地址生长。
小端
大端
确定大小端的方法
union
#include <stdio.h>
// 定义一个联合体,包含一个字节序列和一个整数
union EndianCheck {
int num;
char bytes[sizeof(int)];
};
int main() {
union EndianCheck check;
// 初始化整数值为1,这样在内存中的二进制表示会有一个字节为1,其余为0
check.num = 1;
// 根据bytes数组的第一个元素是否为1来判断是大端还是小端
if (check.bytes[0] == 1) {
printf("当前系统是小端模式(Little-Endian)\n");
} else {
printf("当前系统是大端模式(Big-Endian)\n");
}
return 0;
}