首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCC的__builtin_isnan做的不是isnan吗?

GCC的__builtin_isnan做的不是isnan吗?
EN

Stack Overflow用户
提问于 2021-06-28 12:59:40
回答 1查看 255关注 0票数 2

GCC内置描述中,它说:

GCC提供了内置版本的ISO C99浮点比较宏,避免引发无序操作数的异常。它们具有与标准宏相同的名称( isgreater、isgreaterequal、isless、islessequal、isless和isunordered),并以_builtin作为前缀。我们希望库实现者能够简单地将每个标准宏定义为其内建的等效宏。GCC也以同样的方式提供了fpclassify,isfinite,isinf_sign,isnormal和signbit内置的_builtin前缀。isinf和isnan内置函数同时出现在_builtin前缀和不带前缀的情况下。

所以,我不能很好地分析这个。什么时候浮点比较应该产生例外?他们执行C标准任务吗?命令他们不这么做?没有什么命令吗?__builtin_isnan()的行为是否与isnan()不同?

EN

回答 1

Stack Overflow用户

发布于 2021-06-28 13:26:22

除了这里,GCC的文档是指IEEE 754浮点异常。如果你做这样的事

代码语言:javascript
复制
a < b

其中一个操作数是NaN,将引发FP异常(无效)。这意味着FPU中的一点将保持设置,直到程序员显式清除为止。通过使用isgreater/isless/etc,程序员可以避免触发FP异常。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68163793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档