字節序
小端字節序(Little Edian)指低字節數據存放在內存低地址處,高字節數據存放在內存高地址處。比如整形1在內存中的存放情況是:
而換成大端字節序(Big Edian)則是:
基於Intel X86的體系結構的PC機是小端字節序,我們可以寫一個程序來驗證。
#include<stdio.h>
main(){
int num=1;
int c=num>>24;
printf("%d\n",c);
c=num & 0xff;
printf("%d\n",c);
}
輸出0和1。
我們知道union中只存儲一個成員變量,union的長度是其size最大的成員變量的長度。
#include<stdio.h>
union {
int i;
char x[2];
}a;
main(){
a.x[0]=10;
a.x[1]=1;
printf("%d\n",a.i);
}
a是全局變量,它被初始化爲0。a佔4個字節的內存空間,並且a.x和a.i共用此空間。聯合體a中數據存儲情況是:
所以a.i=0x010A,即266。