在下面的代码中
#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);
}
我知道 union 一次只能保存一个值。因此,当我分配 char 值时,int 将被覆盖,n 然后当我分配 floatValue 时,char 将被覆盖。所以我期待 int 和 char 变量有一些垃圾值,float 变量有 20.200000,因为它是最后一个要分配的值。但以下是我在 VS Express 和 gcc 上得到的输出
1101109658 Ü 20.200001
无法理解为什么浮点值会改变?