以下 C++ 代码:
union float2bin{
float f;
int i;
};
float2bin obj;
obj.f=2.243;
cout<<obj.i;
将输出作为一些垃圾值。
但
union float2bin{
float f;
float i;
};
float2bin obj;
obj.f=2.243;
cout<<obj.i;
给出与 f 的值相同的输出,即2.243
编译器 GCC 具有相同大小的 int 和 float 即 4 但是这种输出行为背后的原因是什么?