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