下面的程序输出为什么?求解

wangyangkobe 2011-03-30 03:17:13

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; // 输出什么?
...全文
83 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2011-03-30
  • 打赏
  • 举报
回复
摒弃cout;
使用printf
luciferisnotsatan 2011-03-30
  • 打赏
  • 举报
回复
浮点数里,0.0是分正负的,打上负号,b的结果就是false了
float b = -0.0f;
luciferisnotsatan 2011-03-30
  • 打赏
  • 举报
回复
一个是类型转换,把float型转成int。
而另一个是把float型数据格式的内容直接变成int的格式来读取。也就是说直接把直接已int方式来解析内存里的数据。
+0.0 (注意是正的,+可以省略)时,float的32bit正好全是0,和类型转换后的int一样。都是0。而1.0就不一样了。
关于浮点数格式,请看 深入理解计算机系统(第2版),2.4节
delphiwcdj 2011-03-30
  • 打赏
  • 举报
回复
(int&)a; 相当于 *(int *)&a; 把变量的内存值,按照int去解析。
pengzhixi 2011-03-30
  • 打赏
  • 举报
回复
(int)a;将a的值转换为int输出
(int&)a;将a的二进制以int解释输出。
qq120848369 2011-03-30
  • 打赏
  • 举报
回复
1
乱码
false
0
0
true

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧