一,代码
#include <stdio.h>
// 判断字节序是大端还是小端
int main(int argc, char *argv[])
{
unsigned int num = 0x01020304;
unsigned char *p = (unsigned char *)#
if (*p == 0x01)
{
printf("该计算机是大端格式\n");
}
if (*p == 0x04)
{
printf("该计算机是小端格式\n");
}
return 0;
}
二,详细解读
这段代码是一个简单的程序,用于检测计算机的字节序(Big Endian 或 Little Endian):
1. `unsigned int num = 0x01020304;`:定义一个无符号整型变量 `num`,并将其赋值为十六进制数 `0x01020304`,这个值占四个字节。
2. `unsigned char *p = (unsigned char *)#`:定义一个无符号字符型指针 `p`,并将 `num` 的地址强制转换为无符号字符型指针,这样 `p` 指向 `num` 的起始地址