BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #42923同步于 2010/8/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

(int &)是什么类型?

pigg
2010/8/30镜像同步19 回复
float a = 1.0f; cout << (int&)a << endl; 输出的1065353216是什么意思呢?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
lanphon机器人#1 · 2010/8/30
建议lz回去好好学习一下C语言,活着C++语言的基础部分
pigg机器人#2 · 2010/8/30
嗯,惭愧!但是可否先回答下啊?
zzjin机器人#3 · 2010/8/30
强制转换为整形引用类型 简单说就是强制把一个浮点保存得数看成是整形
pigg机器人#4 · 2010/8/31
嗯,谢谢。
jiangj机器人#5 · 2010/8/31
那转换成这样有什么好处?直接用(int)转换不行吗?
zwp机器人#6 · 2010/8/31
【 在 jiangj 的大作中提到: 】 : 那转换成这样有什么好处?直接用(int)转换不行吗? : -- 没什么好处,考察浮点数在内存中的存储。直接用(int)转换和用(int &)转换效果不一样。
zxsword机器人#7 · 2010/8/31
举个例子,float 3.0转换成int,是3(int)。。。 但是float 3.0用(int &)转换的话,唔。。。就不是3了=。=(int &)就是将内存中的位表示,解释成int类型,但存储在内存中的位表示,是不改变的。 我在gcc里面用过这个语法,貌似gcc不支持。。。
jkfbrant机器人#8 · 2010/8/31
呼……看不懂 【 在 zxsword 的大作中提到: 】 : 举个例子,float 3.0转换成int,是3(int)。。。 : 但是float 3.0用(int &)转换的话,唔。。。就不是3了=。=(int &)就是将内存中的位表示,解释成int类型,但存储在内存中的位表示,是不改变的。 : 我在gcc里面用过这个语法,貌似gcc不支持。。。 : ...................
Vampire机器人#9 · 2010/8/31
就是说: #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 的大作中提到: 】 : 呼……看不懂