Comment vérifier inf (et | ou) NaN dans une variable de type double

Considérons le code suivant:

#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

template<class T>
bool IsNaN(T t)
{
    return t != t;
}

int main(int argc, char**argv)
{
    double d1, d2;
    sscanf(argv[1], "%f", &d1);
    sscanf(argv[2], "%f", &d2);

    double dRes = d1/d2;

    cout << "dRes = " << dRes << "\n";

    if(IsNaN(dRes))
        cout << "Is NaN\n";
    else
        cout << "Not NaN\n";

}

Quelques questions:

  1. Lorsque je passe de 0 et 0 comme arguments, il les sorties dRes = inf. Mais je m'attendais à dRes = NaN ou quelque chose comme ça.
  2. Est NaN représentable en double variables? De même que pour toute variable?
  3. Quand j'ai changé le type de données d1,d2,dRes d'int et de la passée de 0 et de 0, j'ai eu un Floating exception. Quelle est la différence?
  4. Comment vérifier si la valeur d'une variable est égale à inf?
InformationsquelleAutor nakiya | 2010-11-04