大家帮忙看一下软件工程师面试宝典上的一个程序

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

 
#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又代表什么意思呢?
程序运行结果是
大家帮忙看一下软件工程师面试宝典上的一个程序
谢谢!
程序员 面试 C++

------解决方案--------------------
第二句不是取地址, 是用 int 来重新解释 float 的内存.
直接 (int)a 编译器会调用一个函数来把 float 转换成 int 类型. 是数值上的转换.
int& 本身表示引用类型. (int&)a 让编译器把 float 对应的二进制当作 int 来解释, 而不是通过函数做数字上的转换.