编程c语言中nan,如何在C中使用nan和inf?
你可以testing你的实现是否有:
#include #ifdef NAN /* NAN is supported */ #endif #ifdef INFINITY /* INFINITY is supported */ #endif
INFINITY的存在由C99(或至less是最新的草案)保证,并且“扩展为浮点types(表示正或无符号无穷大(如果可用))的常量expression式;否则,在翻译时溢出的floattypes的正常数。 “
NAN可以被定义,也可以不被定义,并且“当且仅当该实现支持浮点types的安静NaN时才被定义,并且扩展为代表安静的NaN的floattypes的常量expression式。
请注意,如果您正在比较浮点值,请执行以下操作:
a = NAN;
即使这样,
a == NAN;
是错误的。 检查NaN的一种方法是:
#include if (isnan(a)) { ... }
你也可以这样做: a != a来testinga是否是NaN。
在C99的math.h中还有isfinite() , isfinite() , isinf()和signbit()macros。
C99也有nanfunction:
#include double nan(const char *tagp); float nanf(const char *tagp); long double nanl(ocnst char *tagp);
(参考:n1256)。
这样做没有编译器独立的方式,因为C(也就是C ++)标准都没有说浮点mathtype
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
