Der unten gezeigte Code wurde erhalten here. Aber die Ausgabe ist etwas anders.Ich erhalte unterschiedliche Ausgabe, wenn ich den Code in VS2015 verarbeite. Gibt es eine Erklärung?
#include <iostream>
#include <limits>
using namespace std;
int main()
{
cout << "The quiet NaN for type float is: "
<< numeric_limits<float>::quiet_NaN()
<< endl;
cout << "The quiet NaN for type int is: "
<< numeric_limits<int>::quiet_NaN()
<< endl;
cout << "The quiet NaN for type long double is: "
<< numeric_limits<long double>::quiet_NaN()
<< endl;
}
Dies ist der Ausdruck in meinem VS2015:
The quiet Nan for type float is : nan
The quiet Nan for type int is : 0
The quiet Nan for type long double is : nan
während der Ausgang in dem MSDN-Artikel sagt, sollte es sein:
The quiet NaN for type float is: 1.#QNAN
The quiet NaN for type int is: 0
The quiet NaN for type long double is: 1.#QNAN
, die mit den Werten in der Tabelle übereinstimmt, gezeigt auf this blog entry.
Microsoft verwendet, um diese funky Dinge zu verwenden, die im Zitat von MSDN beschrieben werden. Aber C99 standardisierte, was die Ausgabe für NaN-Werte sein sollte, was Ihre Ausgabe zeigt, also sieht es so aus, als ob Microsoft endlich den C-Standard eingeholt hat. –
Sehr nett von dir, meine Frage zu beantworten. Vielen Dank. – Mao
Gibt es einen Referenzartikel von MS Doc zur Änderung? – rents