在下面的代碼ç聯盟和同時分配給成員
#include<stdio.h>
int main()
{
union myUnion
{
int intVar;
char charVar;
float floatVar;
};
union myUnion localVar;
localVar.intVar = 10;
localVar.charVar = 'A';
localVar.floatVar = 20.2;
printf("%d ", localVar.intVar);
printf("%c ", localVar.charVar);
printf("%f ", localVar.floatVar);
}
我明白,工會可以一次只持有一個值。所以當我分配char值時,int會被覆蓋,n然後當我分配floatValue時,char會被覆蓋。所以我期待着int和char變量的一些垃圾值,以及float變量的20.200000,因爲它是最後一個值。但是,下面是我得到的VS快速輸出以及GCC
1101109658 Ü 20.200001
無法理解爲什麼浮點值被改變?
如果我只能找到一個體面的一個,我會把它作爲重複關閉。你的問題與工會無關,一切都與浮點數有關。閱讀已發佈的Goldberg鏈接和[C FAQ](http://c-faq.com/fp/index.html)。 – Lundin 2014-09-10 13:40:50