类型转换中强制转换int与(int&)的区别,求大侠指点,该怎么处理

类型转换中强制转换int与(int&)的区别,求大侠指点
#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;
}

------解决方案--------------------
(int) -强制转换成 int类型 (int&)-强制转换成int引用类型
------解决方案--------------------
http://topic.csdn.net/u/20070618/15/64bf9e83-c422-43aa-a451-5deed812e947.html
------解决方案--------------------
(int&)b 相当于 *(int*)&b
------解决方案--------------------
一个有临时对象生成,一个没有。强制转换为int的有,强制转换为Int&没有
------解决方案--------------------
(int)a时有对浮点到整形的转换
(int&)a时,直接吧内存中的数据当做整型操作了~

------解决方案--------------------
http://blog.csdn.net/supermegaboy/article/details/7038327

看其中的例子CDEFG。
------解决方案--------------------
(int)a 是有一个临时变量在中间转化,把float转成int输出。

 (int &)a 是相当于 *(int*)&a;
  
int 和 float 在c++中都是4字节,(int &)a 就相当于用int型直接读出了内存中的数据。

float 和 int 类型在内存中存储的方式不同,所以读出来就会有差异。关于各类型的存储方式可参考:
http://blog.csdn.net/qingkong8832/article/details/6687793