#include union node { int a; char b[4]; }; int main() { union node t; t.a=1; printf("%d\n",t.b[0]); printf("%d\n",t.b[1]); printf("%d\n",t.b[2]); printf("%d\n",t.b[3]); } 把int的每個字節讀出來。要是第一個字節爲0證明是大端模式 ...
寫一個函數判斷系統是大端還是小端。若處理器是Big_endian的,則返回0;若是Little_endian的,則返回1.
大端格式:在這種格式中,字數據的高字節存儲在低地址中,而字數據的低字節則存放在高地址中
小端格式:與大端存儲格式相反,在小端存儲格式中,低地址中存放的是字數據的低字節,高地址存放的是字數據的高字節
聯合體union的存放順序是所有成員都從低地址開始存放。
Int checkCPU ()
{
Union w
{
Int a;
Char b;
}c;
c.a=1;
return (c.b==1);
}
計算機的一個int型數據是用多個字節表示的,如果在內存中存放時標稱該數據的地址中存放的是數據的最低字節,就叫小端機,反之把高字節存放在標稱地址中的則稱爲大端機。所以可以定義一個int變量,將其地址強制爲char *型地址,檢測該地址中的數據若是int變量的最低字節,則是小端機,反之則爲大端機。代碼如下:
//#include "stdafx.h"//If the vc++6.0, with this line. #include "stdio.h" int main(void){ int n=1; printf(*(char *)&n ? "小端\n" : "大端\n"); return 0; }