C语言判断计算机大小端存储问题
大端存储:低字节放在高地址的位置,高字节放在低地址的位置
小端存储:低字节放在低地址的位置,高字节放在高地址的位置
第一种判断方式:用指针的方式来判断
int在内存中占四个字节 char一次访问一个字节
比如说我们存一个1
如果是小端的话在内存中就是0x01000000
如果是大端的话在内存中就是0x00000001
我们只要判断用char访问的是01还是00就可以判断是大端还是小端
int a=1;
int b=(*char)&a;
if b为1则是小端 else则是大端
第二种判断方式:用联合体来判断
联合体在内存中开辟的空间是联合体内部元素共用的,为了节省空间。
假如联合体内部有char 有int ,则开辟一个int空间,4个字节,高地址处放char,整体可以放int,不可以共存。
代码如下
union un
{
int i;
char c;
};
un i=1;
printf("%d",un.c);
if b为1则是小端 else则是大端