#include<iostream>
using namespace std;
void main()
{
float a = 1.0f;
cout << (int)a << endl;
cout << (int&)a << endl;
cout << boolalpha << ( (int)a == (int&)a ) << endl;
float b = 0.0f;
cout << (int)b << endl;
cout << (int&)b << endl;
cout << boolalpha << ( (int)b == (int&)b ) << endl;
}
结果:1 1065353216 false
0 0 true 为什么?
解答:
将一个浮点数转化为地址,由于这是强制转换,系统没有任何判断(C++是这样),他就按照原数据进行转换,0.0在系统中存储为全0,因此结果为0,而1.0在计算机中就不是一个1了,它是按照阶码和系数存储的,阶码里面也有很多1,因此输出是一个很大的数