Éléments NAN (non numériques)
Le compilateur Visual C++ prend en charge les comparaisons d'éléments NaN (non numériques) conformément à la norme IEEE. Si x est NaN et y n'est pas NaN :
(x != x) == true
(x == x) == false
(y > x) == false
(y < x) == false
Les tests de classement NaN retournent toujours false : NAN [<, <=, >, >=] [tout_nombre] sera false.
Le code suivant montre comment les NaN en Visual C++ ne peuvent pas être correctement comparés à un nombre à virgule flottante :
#include <math.h>
#include <stdio.h>
#include <float.h>
int main( void ) {
unsigned long nan[2]={0xffffffff, 0x7fffffff};
double g = *( double* )nan;
if ( g <= 3.0 )
printf( "g( %g ) <= 3.0\n", g );
else if ( g > 3.0)
printf( "g( %g ) > 3.0\n", g );
else
printf( "g( %g ) is NaN\n", g );
}