大家好,欢迎来到IT知识分享网。
你可以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
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/158891.html