[英]C pointer type cast
float fNum = 12.3;
int *pF = (int *)&fNum;
printf("fNum:%f pF:%d \n", fNum, *pF);
*pF = 233;
printf("fNum:%f pF:%d \n", fNum, *pF);
return 0;
结果是这样的
fNum:12.300000 pF:1095027917
fNum:0.000000 pF:233
我想知道为什么这样的结果? fNum
& *pf
指向相同的内存?
首先,变量fNum
不指向任何东西。 这是实际值。
而浮点数是不一样的整数。 对于浮点数,内存中的位模式非常不同。
fNum
包含12.3
浮点二进制表示形式。 因此,当您将fNum
内存的内容打印为整数时,您将获得此二进制数的转换为十进制值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.