判断编译器是大端还是小端

什么是大小端?

有些编译器从低位字节开始存放,称为“小端”,有的从高位字节开始存放,称为“大端”。
大端:高字节放在低地址,和我们从左往右阅读的顺序一致。
小端:低字节放在低地址。

int main()
{
	int a = 1;
	//[01 00 00 00]小端存储
	//[00 00 00 01]大端存储
	return 0;
}

如何判断大小端?

1.通过字节大小判断

因为int为4个字节,因此我们只需要取出int的第一个字节,判断他的低地址存放的是否为1,就可以判断该编译器是大端还是小端了。

如下:

int check_sys()
{
	int a = 1;
	//返回1,小端
	//返回0, 大端
	return *(char*)&a;
}

int main()
{
	int ret = check_sys();
	if (ret == 1)
	{
		cout << "小端" << endl;
	}
	else
	{
		cout << "大端" << endl;
	}
	system("pause");
	return 0;
}

结果:
在这里插入图片描述

2.运用结构体

int check_sys()
{
	union
	{
		char c;
		int i;
	}u;//定义一个u的变量

	u.i = 1;
	return u.c;
}

结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/l477918269/article/details/89608898
今日推荐