我聽說過的工會是它將爲其中最大的變量分配內存空間。在這裏,我試圖用兩種不同的方式分配「相同」的價值,但結果是有問題的。工會內部的變量分配差異
首先,
union h {
int a;
char b;
};
int main()
{
union h h1;
h1.b = 'X';
printf("%d %c\n",h1.a, h1.b);
return 0;
}
的輸出將是一個大的隨機數後跟 'X'
-1674402216 X
當我試圖分配h1.a也成多個,
union h {
int a;
char b;
};
int main()
{
union h h1;
h1.a = 1;
h1.b = 'X';
printf("%d %c\n",h1.a, h1.b);
return 0;
}
Th是給出輸出
88 X
有人可以幫我找出究竟發生了什麼嗎?
Thankyou :)
一個'union'可以保存其**成員**,* *成員*(這是最近寫到的成員)的價值。訪問不活動的成員通常是*未定義的行爲*(在C標準中描述了例外情況)。由於兩個成員共享存儲空間,你期望什麼? –
感謝您的回覆。我預計它會顯示爲'88 X'本身。原因:h1.b被賦值爲'X',我預計變量h1.a也會反映相同的變化。 – sasebot