keil 在作浮点指针的时候,某些现象是比较奇怪的,其实下面遇到的问题也适用于其他的PC系统。 main() { long a = 12345678; float b = 0 ; float *c ; c = (float*)&a; b = (float)a; // 判断*c是否等于b }
以上的程序中,b和a的数值一致,而c和a的数值是不一样的! 关于这个问题,其实是一个数值转换的问题,因为浮点数位权不一致,但是c和a中存储的二进制码是一样的。 b和a一样的原因是强制类型转换后,通过算法将定点数转换为相应的浮点值,而b和a存储单元内的二进制码是不一样的。
愚以为此问题为多数编程者所不知,贴出来晒晒。 可以到我的博客来讨论,上面有关于浮点的格式说明。 相关链接:http://http://blog.21ic.com/user1/4346/archives/2007/42326.html |