返回信息流float a = 1.0f;
cout << (int&)a << endl;
输出的1065353216是什么意思呢?
这是一条镜像帖。来源:北邮人论坛 / cpp / #42923同步于 2010/8/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
(int &)是什么类型?
pigg
2010/8/30镜像同步19 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 jiangj 的大作中提到: 】
: 那转换成这样有什么好处?直接用(int)转换不行吗?
: --
没什么好处,考察浮点数在内存中的存储。直接用(int)转换和用(int &)转换效果不一样。
举个例子,float 3.0转换成int,是3(int)。。。
但是float 3.0用(int &)转换的话,唔。。。就不是3了=。=(int &)就是将内存中的位表示,解释成int类型,但存储在内存中的位表示,是不改变的。
我在gcc里面用过这个语法,貌似gcc不支持。。。
呼……看不懂
【 在 zxsword 的大作中提到: 】
: 举个例子,float 3.0转换成int,是3(int)。。。
: 但是float 3.0用(int &)转换的话,唔。。。就不是3了=。=(int &)就是将内存中的位表示,解释成int类型,但存储在内存中的位表示,是不改变的。
: 我在gcc里面用过这个语法,貌似gcc不支持。。。
: ...................
就是说:
#include <iostream>
using namespace std;
int main() {
float f = 3.0f;
cout << f << endl;
cout << (int)f << endl;
cout << (int &)f << endl;
return 0;
}
打印出
3
3
1077936128
(int &)f只是把f那里存的二进制数据reinterpret了
【 在 jkfbrant 的大作中提到: 】
: 呼……看不懂