union變量存儲

字節序

小端字節序(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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章