Элементы nan (NAN)

Компилятор Visual C++ поддерживает сравнения элементов nan (NAN) в соответствии IEEE-совместимого.If x NAN и y не является NAN.

  • (x ! = x==) true

  • (x == x==) false

  • (y > x==) false

  • (y < x==) false

Тесты NAN упорядочивание всегда возвращают false: NAN [<, <=, >,] [>=any_numberбудет false.]

В следующем примере кода показано, как NANs в Visual C++ невозможно сравнить успешно на число с плавающей запятой:

#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 );
}

См. также

Ссылки

Лексических правил