免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2193 | 回复: 5

[C] 两条输出语句分别输出什么? [复制链接]

论坛徽章:
0
发表于 2009-08-18 14:42 |显示全部楼层
以下两条输出语句分别输出什么?
float a = 1.0f;
cout << (int)a << endl;
cout << (int&)a << endl;
cout << boolalpha << ( (int)a == (int&)a ) << endl; // 输出什么?
float b = 0.0f;
cout << (int)b << endl;
cout << (int&)b << endl;
cout << boolalpha << ( (int)b == (int&)b ) << endl; // 输出什么?

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
发表于 2009-08-18 15:18 |显示全部楼层

回复 #1 culuckyabcd 的帖子

设v1是一个类型为T1的对象:
T1 v1;

则:
(T2&)v1;

是如下语句:
*(T2*)&v1;

的一种高级写法……



也就是说:
(int&)a;  (int&)b;  就是a、b两浮点变量的整数表示。

论坛徽章:
0
发表于 2009-08-18 15:36 |显示全部楼层
学习了, 按照这么说应该是两个false了?

论坛徽章:
0
发表于 2009-08-18 15:46 |显示全部楼层
原来一个是false, 一个是true.
对浮点数在计算机的表示理解不够

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
发表于 2009-08-18 15:56 |显示全部楼层

回复 #4 netrookie 的帖子

(int)a; 应该就是1。
(int&)a; 是1.0f的整数表示,  我不熟悉IEEE754 ... 熟悉的同学可以验证一下~~~

两者应该是不等的。

(int)b == (int&)b;
同理
不过b是0.0f, (int)b就是0, (int&)b应该还是0.

论坛徽章:
0
发表于 2009-08-18 17:47 |显示全部楼层
学习~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP