非数 (NAN) 項目

Visual C++ コンパイラは、IEEE に準拠した方法で、数値ではない (NAN) 項目の比較をサポートします。 x が NAN で、y が NAN でない場合は、次のようになります。

  • (x != x) == true

  • (x == x) == false

  • (y > x) == false

  • (y < x) == false

NAN 順序テストは常に false を返します。NAN [<, <=, >, >=] [any_number] は false になります。

次のコードに、Visual C++ の NAN と浮動小数点数を正確に比較できないようすを示します。

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

参照

関連項目

構文規則