c++类型转换

来源:百度知道 编辑:UC知道 时间:2024/07/01 06:25:57
void main()
{
float fa=10.23f;
float* pa=&fa;
int* ia=(int*)pa;
cout<<ia<<'\t'<<pa<<endl;
cout<<*ia<<'\t'<<*pa<<endl;

}

运行结果:

0012ff74 0012ff74
1092857364 10.23
请解释一下,谢谢!
可能 是我真的太差了,我找不到如何转换的公式,请告诉我,或给我篇相关文章的地址,谢谢!

pa是指向fa的指针,因此其值就是fa的地址,
ia是直接由pa强制转换来的,所以其值也是fa的地址,
因此第一行输出的就是fa的地址,0012ff74

但ia是声明为int型的指针,而fa是float型的,所以*ia这种写法,就把0012ff74这块内存空间当成是存放了整形数据,就把10.23的二进制表示当成是一个整数,而10.23的二进制表示正好是1092857364这个整数的二进制码.(具体原因请查找浮点数表示方法)