程序面试题 强制类型转换(int)与 (int&)的区别

一道面试题:

程序代码如下:
   float a1=1.0f;
   float b1=0.0f;
   cout<<boolalpha<<"boolalpha:"<<((int)a1==(int&)a1)<<endl;
   cout<<boolalpha<<"boolalpha:"<<((int)b1==(int&)b1)<<endl;
以上程序结果是:
boolalpha:false
boolalpha:true

第一个为什么是false?
Why???

(int)a1 的结果是1 这毫无疑问。

(int&)a1结果是啥捏?

c++中引用和指针有点像,我个人理解 (int&)a1为 将a1的内存地址当做一个int*的指针 然后取值。。

实验证明:

float a1=1.0f;
 float b1=0.0f;
 int dd = (int&)a1;
 cout<<dd<<endl;
 int* p = (int*)(void*)&a1;
 cout<<*p<<endl;

以上输出是一样的。。

O了

posted @ 2010-07-21 22:54  David Luo  阅读(737)  评论(0编辑  收藏  举报