为什么在VS2010中1.0f小于0.0f?

use*_*480 -10 c++ floating-point assembly compare

奇怪的浮点比较

如图所示,rotCount为1.0f.但是,当将rotCount与0.0f进行比较时,调试器会输入if语句,这不应该发生.

我使用Visual Studio 2010的默认调试模式,优化关闭.这是这段代码的拆卸. 在此输入图像描述

似乎在fcomp之后,没有生成测试和跳转汇编代码.这被认为是VS2010中的错误吗?谁知道为什么?

jco*_*der 31

在if语句的末尾有一个分号,因此if不控制块.去掉它

  • 如果只是有警告告诉你什么时候这样做......我称之为C4390. (16认同)
  • 这就是为什么你不凝视汇编程序而是使用编译器捕获这种东西...... (9认同)
  • 我喜欢这个问题是如何获得一堆赞成票的,而第二个你回答的是他们都来到了这里:p (3认同)