浮点转换--笔试题的思考?
/*---------------浮点转换---------------------------------*/
- C/C++ code
int main(){ float a = 1.0f; cout << (int)a << endl; cout << &a << endl; cout << (int&)a << endl; cout << boolalpha << ( (int)a == (int&)a ) << endl; float b = 0.0f; cout << (int)b << endl; cout << &b << endl; cout << (int&)b << endl; cout << boolalpha << ( (int)b == (int&)b ) << endl; return 0;}
问题1:(int&)a中(int&)的确切含义是什么?
我知道的答案是:浮点数的内存和整数的存储方式不同;int(&a) 相当于该浮点地址开始的sizeof(int)个字节当成int型的数据输出,这取决于float型数据在内存中的存储方式,而不是经过int(&a)显示转换的结果1。
能不能再详细介绍一下?
[解决办法]
浮点1的内存:3f 80 00 00
整数1的内存:00 00 00 01
(int)a相当于调用了一个函数,convert_from_float_to_int(a)
(int&)a相当于 *((int*)&a),即得到0x3f800000