我有以下程序:double和NaN的比较结果是什么?
#include <iostream>
#include <cmath>
int main() {
double a = 1;
double b = nan("");
std::cout << (a > b) << std::endl;
std::cout << (b > a) << std::endl;
return 0;
}
输出:
0
0
一般从nan
意义 - not a number
很显然,与nan
任何操作基本上是没有意义的。从我在互联网上发现的IEEE-754
我发现如果在FPU中至少有一个操作数是nan
,结果也是nan
,但我没有发现正常值和nan
之间的比较,如上例。
标准对此有何评论?
FPU函数和比较的逻辑结果可能是两个不同的东西。你的反汇编说什么? – tadman
您的代码可能(或可能不会)缺少'=='比较。你确实检查了'<' and '>'而不是'=='。也许你打算使用'<' and '> ='或'<=' and '>'。 – jotik