【发布时间】:2013-05-16 01:31:43
【问题描述】:
我已经知道if(nan != nan) -> TRUE,这很符合逻辑(sqrt(-1)必须不等于0/0。
下面这行代码也是合乎逻辑的:
if(nan > 90.0f) -> FALSE
...nan 不是数字,因此不能大于或小于数字。
但是,我不明白为什么if(nan >= 90.0f) -> TRUE ?!?!
我正在使用 Tasking C166 编译器。
【问题讨论】:
-
@Patashu c 在标签中。我不记得在 c tho 中使用过 NAN ._.
-
查看生成的程序集。我怀疑编译器将其“优化”为
if (!(nan < 90.0f))。由于所有涉及 NaN 的比较 [除了!=] 返回 false,这将导致观察到的行为。