浮点型数转化为整型数的陷阱"/>
C语言中浮点型数转化为整型数的陷阱
最近做嵌入式项目,把一段老代码一直到智能手机平台之后发现了意想不到的bug。
简单来说就是一个负的FLOAT强转为WORD型会变成0,比如
FLOAT f = -1.0;
WORD w = f;
w会变成0,而不是期待的0xffff(65535)。
于是我在PC上用devc++(win版gcc)和linux版gcc都试了一下,发现均能得到0xffff结果。
反汇编后发现它们使用了x87 PFU的FISTP指令,而这个结果其实是由这个指令给出的。
但遗憾的是在智能手机平台上同样是gcc却得不到0xffff。
由于环境的问题暂时没办法反汇编
更多推荐
C语言中浮点型数转化为整型数的陷阱
发布评论