0
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指向同一个内存?

4

2 回答 2

8

首先,变量fNum指向任何东西。这是实际值。

浮点数整数不同。对于浮点数,内存中的位模式非常不同。

于 2013-05-07T09:23:34.803 回答
0

fNum包含浮点二进制表示12.3。因此,当您将内存的内容打印fNum为整数时,您将得到这个二进制集的转换为十进制值

于 2013-05-07T09:24:29.867 回答