【发布时间】:2021-01-30 02:58:15
【问题描述】:
#include <stdio.h>
#include <math.h>
int main()
{
long double x = NAN;
printf("x = %Lg\nisnan(x) = %d\n", x, isnan(x));
return 0;
}
当我运行上面的程序时,我得到了输出:
x = nan
isnan(x) = 0
根据手册页,isnan 应该在参数为 NaN 时返回非零值。那么为什么它返回零呢?
【问题讨论】:
-
使用选项“-fsignaling-nans”编译
-
@P__J__ 是的,我从您在另一条评论中发布的链接中发现了这一点,并将其编辑为我的答案。如果您将其发布为答案,我会接受(除非其他人发布了更好的答案。)
标签: c floating-point nan cmath long-double