(int&)a和(int)&a


float b=0.0;
float a=1.0;
cout<<(int&)b<
cout<<(int)&b<
cout<<(int&)a<
cout<<(int)&a<
}

输出结果是:
0
2031096
1065353216

2031084


(int&)a == static_cast(a)


(int)&a == reinterpret_cast(&a);
(int&)a 不经过转换, 直接得到a在内存单元的值。(int&)a就是将a转换为int型的引用
(int)a a在内存中的值转换成int类型

float类型在内存中存储的形式是 ,符号位 指数 尾数
由754标准:阶码采用增码(该数补码的反符号),尾数采用原码
所以1.0f 在内存中的形式为
0011 1111 1000 0000 0000 0000 0000 0000
所以输出的是 0x3f800000
0 在内存中的的存储形式
0000 0000 0000 0000 0000 0000 0000 0000
(int&)a 把a强制转换成整形引用类型
(int)&a 把a的地址强制转换成整型

不过最好不要(int)&a

你可能感兴趣的:(程序员面试宝典)