读书人

浮点变换-笔试题的思考

发布时间: 2012-09-12 09:21:30 作者: rapoo

浮点转换--笔试题的思考?
/*---------------浮点转换---------------------------------*/

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

读书人网 >C++

热点推荐