首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
C/C++
C++ 语言
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
一道有意思的面试题
加为好友
发送私信
在线聊天
shuiyongzhegeid
sun
等级:
发表于:
2008-05-30 18:00:11
楼主
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; // 输出什么?
输出啥?
不明白 (int &)a是啥意识?为啥两个比较的出结果不同。
问题点数:
20
回复次数:
30
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
icansaymyabc
学习与进步
等级:
发表于:
2008-05-30 18:14:27
1
楼 得分:
0
...
cout < < boolalpha < < ( (int)a == (int&)a ) < < endl;
// 输出 false, 因为 float 的 1 和 int 的 1 在内存里的表示不一样。
...
cout < < boolalpha < < ( (int)b == (int&)b ) < < endl; // 输出 true
// 输出 true, 因为 float 的 0 和 int 的 0 在内存里的表示是一样的。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
icansaymyabc
学习与进步
等级:
发表于:
2008-05-30 18:22:09
2
楼 得分:
0
(int &)a 就表示 不管 a 是什么,我都当他是一个int变量。
从机器码的角度来说,变量a会被翻译成一个内存地址,(int &)a 就是说,这个内存地址里的内容它是一个整数。
(int)a 呢不同:如果 a 不是整数,就会按规则转换成整数,存入另一个地址(或临时变量)中去。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
icansaymyabc
学习与进步
等级:
发表于:
2008-05-30 18:30:52
3
楼 得分:
0
浮点数的 1.0f 在内存里是这样表示的:
0011 1111 1000 0000 00000000 00000000
这个32位二进制数被当作整数输出就是:
1065353216
而整数的 1 在内存里是这样表示的:
0000 0000 0000 0000 00000000 00000001
所以 (int)a != (int&)a
浮点的0和整数的0 在内存里都是:
0000 0000 0000 0000 00000000 00000000
所以 (int)b == (int&)b
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jintianfree
孤单北半球
等级:
发表于:
2008-05-30 18:52:56
4
楼 得分:
0
学习来了...
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zmlovelx
帅得不敢出门
等级:
发表于:
2008-05-30 18:57:16
5
楼 得分:
0
引用 1 楼 icansaymyabc 的回复:
...
cout < < boolalpha < < ( (int)a == (int&)a ) < < endl;
// 输出 false, 因为 float 的 1 和 int 的 1 在内存里的表示不一样。
...
cout < < boolalpha < < ( (int)b == (int&)b ) < < endl; // 输出 true
// 输出 true, 因为 float 的 0 和 int 的 0 在内存里的表示是一样的。
up
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
dwen20
define
等级:
发表于:
2008-05-30 21:48:41
6
楼 得分:
0
引用 3 楼 icansaymyabc 的回复:
浮点数的 1.0f 在内存里是这样表示的:
0011 1111 1000 0000 00000000 00000000
这个32位二进制数被当作整数输出就是:
1065353216
而整数的 1 在内存里是这样表示的:
0000 0000 0000 0000 00000000 00000001
所以 (int)a != (int&)a
浮点的0和整数的0 在内存里都是:
0000 0000 0000 0000 00000000 00000000
所以 (int)b == (int&)b
UP
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zsxcn
zsx
等级:
发表于:
2008-05-30 22:00:24
7
楼 得分:
0
mark
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
wzhuo918
小小无名
等级:
发表于:
2008-06-02 16:00:22
8
楼 得分:
0
学习了,谢谢你的帖子
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
neo86vip
NEO
等级:
发表于:
2008-06-02 16:04:16
9
楼 得分:
0
哈哈
有长知识了
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
laolaoliu2002
我微微一笑,轻轻地竖起中指!!!!
等级:
发表于:
2008-06-02 16:07:19
10
楼 得分:
0
输出
1
1065353216
false
0
0
true
float 的 1 和 int 的 1 在内存里的表示不一样。
float 的 0 和 int 的 0 在内存里的表示一样。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
cuiluo2002
阿洛
等级:
发表于:
2008-06-03 14:44:07
11
楼 得分:
0
确实很有意思
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
Lstyk
等级:
发表于:
2008-06-03 16:28:37
12
楼 得分:
0
学习。
up
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
k2eats
浩然正气 贵真求善
等级:
发表于:
2008-06-04 10:31:56
13
楼 得分:
0
引用 2 楼 icansaymyabc 的回复:
(int &)a 就表示 不管 a 是什么,我都当他是一个int变量。
从机器码的角度来说,变量a会被翻译成一个内存地址,(int &)a 就是说,这个内存地址里的内容它是一个整数。
(int)a 呢不同:如果 a 不是整数,就会按规则转换成整数,存入另一个地址(或临时变量)中去。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
haozhishuai3717
等级:
发表于:
2008-06-04 10:49:26
14
楼 得分:
0
引用 3 楼 icansaymyabc 的回复:
浮点数的 1.0f 在内存里是这样表示的:
0011 1111 1000 0000 00000000 00000000
这个32位二进制数被当作整数输出就是:
1065353216
而整数的 1 在内存里是这样表示的:
0000 0000 0000 0000 00000000 00000001
所以 (int)a != (int&)a
浮点的0和整数的0 在内存里都是:
0000 0000 0000 0000 00000000 00000000
所以 (int)b == (int&)b
学习
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jiahehao
风林火山
等级:
发表于:
2008-06-04 11:00:46
15
楼 得分:
0
学习。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
Yuri370498196
Yuri
等级:
发表于:
2008-06-04 11:26:50
16
楼 得分:
0
引用 3 楼 icansaymyabc 的回复:
浮点数的 1.0f 在内存里是这样表示的:
0011 1111 1000 0000 00000000 00000000
这个32位二进制数被当作整数输出就是:
1065353216
而整数的 1 在内存里是这样表示的:
0000 0000 0000 0000 00000000 00000001
所以 (int)a != (int&)a
浮点的0和整数的0 在内存里都是:
0000 0000 0000 0000 00000000 00000000
所以 (int)b == (int&)b
up
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
iwong
等级:
发表于:
2008-06-04 13:26:45
17
楼 得分:
0
(int&)应该是整型引用吧?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
simo110
等级:
发表于:
2008-06-04 13:55:51
18
楼 得分:
0
3楼正解
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
mujiok2003
等级:
发表于:
2008-06-04 14:12:17
19
楼 得分:
0
二楼正解,把a当作是整型的引用。
(int&) a 相当于*(reinterpret_cast <int*>(&a))
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zxwl
魔君七夜
等级:
发表于:
2008-06-04 14:41:59
20
楼 得分:
0
学习了
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
GoAssemblyNow
老陈
等级:
发表于:
2008-06-04 14:55:06
21
楼 得分:
0
引用 3 楼 icansaymyabc 的回复:
浮点数的 1.0f 在内存里是这样表示的:
0011 1111 1000 0000 00000000 00000000
这个32位二进制数被当作整数输出就是:
1065353216
而整数的 1 在内存里是这样表示的:
0000 0000 0000 0000 00000000 00000001
所以 (int)a != (int&)a
浮点的0和整数的0 在内存里都是:
0000 0000 0000 0000 00000000 00000000
所以 (int)b == (int&)b
学习!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
wyquan101
微微
等级:
发表于:
2008-06-04 15:10:48
22
楼 得分:
0
又学了一点,
3q
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zl_system
随风
等级:
发表于:
2008-06-04 18:24:13
23
楼 得分:
0
学习了
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
rlj021
*****
等级:
发表于:
2008-07-17 15:26:22
24
楼 得分:
0
mark...
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
BetterMind
竹卢
等级:
发表于:
2008-07-17 16:22:39
25
楼 得分:
0
up
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
k2eats
浩然正气 贵真求善
等级:
发表于:
2008-07-17 22:30:00
26
楼 得分:
0
cout < <(int&)a 等价于:
cout < <*((int*)(&a)) < <endl;
你可以看看浮点数在计算机内部的表示,就可以算出1065353216这个值了!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
iwillalwaysloveyou
等级:
发表于:
2008-07-17 22:41:04
27
楼 得分:
0
没啥意思
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
r5raxu00
allen
等级:
发表于:
2008-07-18 04:00:35
28
楼 得分:
0
引用 1 楼 icansaymyabc 的回复:
...
cout < < boolalpha < < ( (int)a == (int&)a ) < < endl;
// 输出 false, 因为 float 的 1 和 int 的 1 在内存里的表示不一样。
...
cout < < boolalpha < < ( (int)b == (int&)b ) < < endl; // 输出 true
// 输出 true, 因为 float 的 0 和 int 的 0 在内存里的表示是一样的。
2楼说的很对! int& a ; 代表a的真实值,而不是a的地址。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
GoAssemblyNow
老陈
等级:
发表于:
2008-07-18 05:09:34
29
楼 得分:
0
引用 3 楼 icansaymyabc 的回复:
浮点数的 1.0f 在内存里是这样表示的:
0011 1111 1000 0000 00000000 00000000
这个32位二进制数被当作整数输出就是:
1065353216
而整数的 1 在内存里是这样表示的:
0000 0000 0000 0000 00000000 00000001
所以 (int)a != (int&)a
浮点的0和整数的0 在内存里都是:
0000 0000 0000 0000 00000000 00000000
所以 (int)b == (int&)b
正解
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
wangdeqie
幸福在流浪
等级:
发表于:
2008-07-18 08:30:37
30
楼 得分:
0
学习了,up
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友