所谓大端模式是数据的高字节部分存放在低地址上,数据的低字节部分存放在高地址部分;小端模式刚好相反,数据的低字节部分存放在低地址上,数据的高字节部分存放在高地址部分。下面直接贴出查询本机系统是大小端模式的代码,该代码基于的一个准则是:数组的下标越大它对应的元素的地址就越大,就如c[1]的地址大于c[0]的地址;同时,在共用体中,它里面的各变量的地址都是相同的,也相当于c[0]和myLong的地址相当。
#include<stdio.h>
static union {
char c[4];
unsigned long mylong;
} endian_test = {{ 'l', '?', '?', 'b' } };
#define ENDIANNESS ((char)endian_test.mylong)
void main()
{
if(ENDIANNESS=='l')
printf("系统是小端模式\n");
else
printf("系统是大端模式\n");
}
程序运行效果图如下: