方式一(通过指针地址)
#include<stdio.h>
//int占四个字节,char占一个字节
int i=1; //存放,存放在低地址(小端),存放在高地址(大端)
char *p=(char *)&i; //截断,存i的一个字节的低地址,然后判断低地址的内容
if(*p == 1)
printf("小端模式");
else // (*p == 0)
printf("大端模式");
方式一(通过指针地址)
//Short占两个字节,char占1个字节
#include <stdio.h>
int checkCPU()
{
unsigned short usData = 0x1; //存放,存放在低地址(小端),存放在高地址(大端)
unsigned char *pucData = (unsigned char*)&usData;
//截断,存usData的一个字节的低地址(起始位置),然后判断低地址的内容
return (*pucData == 0x1);
}
int main()
{
if(checkCPU())
printf("小端\n");
else
printf("大端\n");
return 0;
}
方式二(运用联合体)
#include <stdio.h>
int checkCPU()
{
union w
{
int a;
char b;
}c; //申请空间大小4个字节
c.a =0x01; //存放,存放在低地址(小端),存放在高地址(大端)
return(c.b == 1);//只读取1个字节低地址,判断低地址中是否为0x01
}
int main()
{
if(checkCPU())//若存在低地址
printf("小端\n");
else
printf("大端\n");
return 0;
}
联合体共用一块地址,联合体变量的各个成员都是从低地址开始公用的,所以当调用成员 b 这个成员变量的时候,其开始地址仍然是从起始地址开始的。简而言之,联合体所有的成员都是从低地址开始的。