如果判斷機器是大端還是小端
阿新 • • 發佈:2018-10-27
() 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的值。
如果判斷機器是大端還是小端