程序面试题 强制类型转换(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了