1. 程式人生 > >如果判斷機器是大端還是小端

如果判斷機器是大端還是小端

() nbsp 多個 brush cpp namespace space big 內存地址

大端:高位字節存放在低位地址,低位字節存放在高位地址

小端:高位字節存放在高位地址,低位字節存放在低位地址

#include<iostream>
using namespace std;
union ss
{
	int a;
	char b;
};
int main()
{
	ss aa;
	aa.a = 1;
	if (aa.b == 1)
	{
		cout << "small" << endl;
	}
	else
	{
		cout << "big" << endl;
	}
	return 0;
}

  運行結果為:

技術分享圖片

解析:union是多個變量共享一塊內存,此時我們的union中是int 類型的a變量和char 類型的b變量共享一塊內存,這塊內存的大小是4個字節,而b變量只需要一個字節大小的內存空間就滿足了,此時b所在內存中的位置如下:

技術分享圖片

從左到右是內存地址增加的方向,此時我們給變量a賦值為1,1是低位字節,如果是小端機器,會把1存放在低地址上,而此時低地址上的內存是與b共享的,那麽地址b的值也會變成1。如果是大端機器,會把1存放在高地址上,而此時b依舊在低地址上,給a賦值為1並不會改變b的值。

如果判斷機器是大端還是小端