C语言中的数据存储有两种模式:大端格式和小端格式
大端格式:数据的低位保存在内存的高地址中,数据的高位保存在内存的低地址中。
以0X11223344为例:
小端格式:数据的低位保存在内存的低地址中,数据的高位保存在内存的高地址中。
以0X11223344为例:
那么我们如何判断一个数的存储格式呢?
第一种方法:
在check()函数中定义一个int类型的变量a,然后将其取地址后强转为char * 赋给p。由于char访问一个字节,则可通过得到的值获知数据的存储方式。本人在Dev 和VC6.0中测出来的是小端。
int check()
{
int a = 1;
char *p = (char *)&a;
return *(char *)&a;
}
int main()
{
if(check() ==1)
{
printf("小端\n");
}else{
printf("大端\n");
}
return 0;
}
第二种方法:
因为共同体的成员是共用同一块空间的,所以我们也可以使用共用体进行判断,实现代码如下:
int check()
{
union
{
int i;
char c;
}un;
un.i = 1;
return un.c;
}
int main()
{
if(check() ==1)
{
printf("小端\n");
}else{
printf("大端\n");
}
return 0;
}