例如:
typedef union tagData
{
long x:2;
long y:4;
long data;
}data_item,*pdata_item;
上述是一個(gè)聯(lián)合體,聯(lián)合體的對(duì)象用的空間是類型中占用內(nèi)存最大的哪個(gè),例如上例中data_item變量占用4個(gè)字節(jié)。
long x:2;
表示x占用2bit
long y:4;
表示y占用4bit
long data;
data占用4byte
所以上述union占用4byte空間。
long s=sizeof(data_item);
s=4;
因?yàn)閤,y,data公用內(nèi)存空間。
從低位開始,即
x占用空間的低2bit,即0-1
y占用空間2~5bit
x,y都是可以是有符號(hào)的,相對(duì)最高位表示符號(hào)位。
例如,
item_data t={0};
(1) t.data = 2;
2表示成二進(jìn)制位10.
所以t.x 的值為-2;
(2) t.data = 3;
3表示成二進(jìn)制位11
所以t.x的值為-1
(3) t.data =1;
此時(shí)t.x的值為1
t.y的取值的道理同t.x;
對(duì)于t.y來(lái)說(shuō)第5位表示正負(fù)號(hào)。