我有以下程序: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