用指针进行数据强制转换
#include <stdio.h>intmain()
{
unsigned ui = 0x3f8ccccd;
floatf1 = ( float ) ui;//错误 ,转换的意义不正确
printf ( "%f\n" , f1);
floatf2 = *( float*)(&ui);//正确,通过指针改变内存数据的意义
printf ( "%f\n" , f2);
return0;
}
floatf2 = *( float*)(&ui);//正确,通过指针改变内存数据的意义
这一句中的*( float*)(&ui)运算符的结合方式是怎么解读的?主要是(&ui)取出ui的地址后,左边的*( float*)是怎么解读?
解读:(&ui)取得ui的地址。( float*)把该地址强转为float类型的指针,*( float*) 获取float指针处的值。
原理参考:
https://wenku.baidu.com/view/18b8bc3cbfd126fff705cc1755270722192e5904.html
页:
[1]