C++ 为什么VS2010中的1.0f小于0.0f?

C++ 为什么VS2010中的1.0f小于0.0f?,c++,assembly,floating-point,compare,C++,Assembly,Floating Point,Compare,如图所示,rotCount为1.0f。 但是,当将rotCount与0.0f进行比较时, 调试器输入if语句,这是不应该发生的 我使用VisualStudio2010的默认调试模式,并关闭了优化。 下面是这段代码的分解。 在fcomp之后,似乎没有生成测试和跳转汇编代码。 这被认为是VS2010中的一个bug吗?有人知道为什么吗?if语句末尾有一个分号,因此if不能控制块。删除它我喜欢这个问题是如何获得一大堆选票的,当你回答的时候,他们都来到了这里:p@KepaniHaole“一束”==1?答

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

我使用VisualStudio2010的默认调试模式,并关闭了优化。 下面是这段代码的分解。

在fcomp之后,似乎没有生成测试和跳转汇编代码。
这被认为是VS2010中的一个bug吗?有人知道为什么吗?

if语句末尾有一个分号,因此if不能控制块。删除它

我喜欢这个问题是如何获得一大堆选票的,当你回答的时候,他们都来到了这里:p@KepaniHaole“一束”==1?答案很好:我盯着反汇编程序看了一分钟,看不见它。在此之前,这个问题似乎很有趣。这就是为什么你不盯着ar汇编器,而是使用一个能捕捉到这种东西的编译器…只要有一个警告告诉你你什么时候做了这件事。。。我称之为C4390。程序的屏幕截图不适合提问。它们破坏了可用性和复制粘贴。我学到了一件事:当你认为你发现了一个编译器错误,那么很可能你自己的代码中有一个错误。@molbdnilo,除了在谈论MSVC时。@molbdnilo:不。MSVC中的编译器错误确实是可能的:)一个有趣的现象是,极客们急于回答“大多数情况下,X是正确的”,还有一个“反例”,其中X不是正确的,这表明极客也不总是正确地应用逻辑。