Ho il seguente programma:Qual è il risultato del confronto tra doppio e 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;
}
uscita:
0
0
In generale dal significato di nan
-not a number
è chiaro che qualsiasi operazione con nan
è essenzialmente inutile. Da IEEE-754
che ho trovato in Internet ho trovato che se in FPU almeno uno degli operandi è nan
il risultato è anche nan
, ma non ho trovato nulla sul confronto tra il valore normale e nan
come nell'esempio sopra.
Che cosa dice lo standard al riguardo?
Le funzioni della FPU e il risultato logico di un confronto sono probabilmente due cose diverse. Cosa dice il tuo smontaggio? – tadman
Il tuo codice potrebbe (o potrebbe non) mancare un confronto '=='. Hai controllato per '<' and '>' ma non per '=='. Forse intendevi usare '<' and '> =' o '<=' and '>'. – jotik