@TOC
int main()
{
float a = 1.0f;
int* p = (int*)&a;
cout << (int)a << endl;
cout << (int&)a << endl;
cout << *p << endl;
}
输出结果
(int) (值之间的转换)
(int)a : 此时实际是,把a(1.0)的值放到一个寄存器里面(此时被称作将往值),然后把这个值转换为int类型,对小数点后面进行截断。
(int *) (地址之间的转换)
(int *)&a : 是把a的地址(float *)类型 转换为(int *)类型,当解析的时候,实际是把a的地址里面存的值以int 类型来解释。
是地址间的转换
(int &) (改变一个变量的类型解释)
(int &)a:是把a地址里面存的值,以int 类型来解释。
因此
cout << (int&)a << endl; 与 cout << *p << endl;输出的结果是一样的。