以前對(duì)union的理解不是很深刻,也很少用到這個(gè)數(shù)據(jù)結(jié)構(gòu),今天在看CloudWu的gc代碼時(shí),他貌似很喜歡用union和struct的層層嵌套,我又順便google了一下union,寫(xiě)點(diǎn)東西加深一下自己的理解,首先看一段代碼如下。
int main()
{
union
{
int i;
struct st
{
char a;
char b;
}half;
}all;
all.i = 0x1122; // union的這塊內(nèi)存值即為0001 0001 0010 0010 a即為低8位,b為高8位
printf("%x%x\n", all.half.a , all.half.b);
all.half.a = 0x22; // 同樣道理a占低8位
all.half.b = 0x11; // b占高8位
printf("%d\n", all.i);
system("pause");
return 0;
}
輸出:
2211
4386