{
float b=0.0;
float a=1.0;
cout<<(int&)b<<endl;
cout<<(int)&b<<endl;
cout<<(int&)a<<endl;
cout<<(int)&a<<endl;
}
输出结果是:
0
2031096
1065353216
float b=0.0;
float a=1.0;
cout<<(int&)b<<endl;
cout<<(int)&b<<endl;
cout<<(int&)a<<endl;
cout<<(int)&a<<endl;
}
输出结果是:
0
2031096
1065353216
2031084
(int&)a == static_cast<int&>(a)
(int)&a == reinterpret_cast<int>(&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