大家帮忙看一下程序员面试宝典上的一个程序

zhzh1126 2013-06-29 10:40:17


#include <iostream>
#include <stdio.h>
#include <string.h>
#include <conio.h>
using namespace std;
int main()
{
float a=1.0f;
cout<<(int)a<<endl;
cout<<&a<<endl;
cout<<(int&)a<<endl;
cout<<boolalpha<<((int)a==(int&)a)<<endl;
float b=0.0f;
cout<<(int)b<<endl;
cout<<&b<<endl;
cout<<(int&)b<<endl;
cout<<boolalpha<<((int)b==(int&)b)<<endl;
return 0;
}

这里cout<<&a<<endl中的&a代表的是a的地址吗?
cout<<(int&)a<<endl中的(int&)a又代表什么意思呢?
程序运行结果是

谢谢!
...全文
118 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
橡木疙瘩 2013-06-29
  • 打赏
  • 举报
回复
(int&)a是将变量a强制转换为int&类型。 它相当于: *((int*)(&a))
www_adintr_com 2013-06-29
  • 打赏
  • 举报
回复
第二句不是取地址, 是用 int 来重新解释 float 的内存. 直接 (int)a 编译器会调用一个函数来把 float 转换成 int 类型. 是数值上的转换. int& 本身表示引用类型. (int&)a 让编译器把 float 对应的二进制当作 int 来解释, 而不是通过函数做数字上的转换.
我看你有戏 2013-06-29
  • 打赏
  • 举报
回复
第一句是取地址,默认地址输出为16进制 第二句是取地址,强制转换为int,默认输出为10进制
startservice 2013-06-29
  • 打赏
  • 举报
回复
&a代表的是a的地址。

64,661

社区成员

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

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