许多实现高质量 IEEE 浮点的系统会提供简洁的工具去处理这些特殊值。例如, 在 <math.h> 以非标准扩展功能, 或可能以 <ieee.h> 或 <nan.h> 提供预定义常数, 及象 isnan() 这类的函数。这些工具的 标准化进程正在进行中。 一个粗陋但通常有效的测试 NaN 的方法:
#define isnan(x) ((x) != (x))
虽然一些不支持 IEEE 的编译器可能会把这个判断优化掉。C99 提供 isnan(), fpclassify() 及其它一些类别的例程。
必要时, 还可以用 sprintf() 格式化需测试的值, 在许多系统上, 它会 产生 ``NaN" 或 ``Inf" 的字符串。你就可以比较了。
http://c-faq-chn.sourceforge.net/ccfaq/node253.html