C指针类型转换

时间:2013-05-07 09:19:15

标签: c

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指向相同的记忆?

2 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:0)

fNum包含12.3的{​​{3}}二进制表示。因此,当您将fNum内存的内容打印为整数时,您将获得将此二进制设置为十进制值的转换