C语言中数据的存储方式

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;
}

猜你喜欢

转载自blog.csdn.net/qq_37415461/article/details/81513928