float b=1.0f; cout<<"int(b) "<<int(b)<<endl; cout<<"(int&)b "<<(int&)b<<endl; cout<<"(int)&b "<<(int)&b<<endl; cout<<boolalpha<<"((int)b==(int&)b) "<<((int)b==(int&)b)<<endl; int a=1; cout<<"a "<<a<<endl; cout<<"(int&)a "<<(int&)a<<endl; cout<<"(int)&a "<<(int)&a<<endl; cout<<boolalpha<<"((int)a==(int&)a) "<<((int)a==(int&)a)<<endl;
cout << (int&)b << endl;,这句话应该是直接使用int类型来输出b的内存地址里的数据。0.0f时float类型的内存段里的32bit都为0。
cout << (int)&b << endl是把b的地址转化为int值输出。
float的结构为
1个符号位,8个阶码位和23个尾数位
double为
1个符号位,11个阶码位,52个尾数位