#include <iostream>
using namespace std;
float Float666() {
union
{
float myFloat;
int myInteger;
};
myFloat = 666;
myInteger = myInteger -1;
return myFloat ;
}
int main()
{
float FLOAT666 = Float666();
cout<<FLOAT666<<endl;
cin.get();
return 1;
}
Union这个结构有个特点:即共用地址。 比如上面的代码中的myFloat ,myInteger就共用了4 bytes的地址。而对myFloat赋值,是按着float类型的存储方式去对待的,但是由于myFloat ,myInteger共用地址所以
myInteger也被赋值了,myInteger会按照int类型的存储方式对待。所以通过调试,即对myFloat赋值后,
其值为666.00000,而myInteger此时为143373824。
而本例的代码实现的功能即得到:计算机能表示的最接近666.00000的float数。所用的方法就是对myInteger减一 。
但是这样做是有风险的。