没有Number (NAN)项目

Visual C++ 编译器支持不是数字 (NAN)项比较以 IEEE 兼容的方式。如果为 NAN xy 不是 NAN:

  • (x ! = x)== true

  • (x == x)== 错误

  • (y AMP_GT x)== 错误

  • (y AMP_LT x)== 错误

NAN 顺序测试始终返回错误:NAN [AMP_LT、 AMP_LT=、 AMP_GT, AMP_GT=] []any_number将是错误的。

下面的代码演示在 Visual C++ 的 NANs 如何无法成功与一个可能比较:

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

请参见

参考

词法约定