c语言isnan,isnan_数值 | Numerics_C_参考手册_非常教程

博客介绍了C语言中用于检测浮点数是否为非数字(NaN)的isnan宏。isnan宏返回一个整数值,当浮点参数是NaN时返回非零值。示例代码展示了对不同浮点值使用isnan的用法,包括NaN、正无穷、零和除以零的情况。此外,还提到了NaN的特性,如不等于自身以及可能的位模式变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

isnan

在头文件中定义

#define isnan(arg) /* implementation defined */

(since C99)

确定给定的浮点数arg是否为非数字(NaN)值。该宏返回一个整数值。

FLT_EVAL_METHOD 被忽略:即使参数的计算范围和精度超过其类型,它首先会转换为其语义类型,并且分类基于此(如果评估类型支持NaN,则语义类型不重要)。

参数

arg

-

浮点值

返回值

非零整数值如果arg是NaN,​0​否则。

笔记

有许多不同的符号位和有效载荷的NaN值,请参阅nan。

NaN值永远不会与自己或其他NaN值相等。复制NaN可能会改变其位模式。

测试浮点值是否为NaN的另一种方法是将其与自身进行比较: bool is_nan(double x) { return x != x; }

#include

#include

#include

int main(void)

{

printf("isnan(NAN) = %d\n", isnan(NAN));

printf("isnan(INFINITY) = %d\n", isnan(INFINITY));

printf("isnan(0.0) = %d\n", isnan(0.0));

printf("isnan(DBL_MIN/2.0) = %d\n", isnan(DBL_MIN/2.0));

printf("isnan(0.0 / 0.0) = %d\n", isnan(0.0/0.0));

printf("isnan(Inf - Inf) = %d\n", isnan(INFINITY - INFINITY));

}

可能的输出:

isnan(NAN) = 1

isnan(INFINITY) = 0

isnan(0.0) = 0

isnan(DBL_MIN/2.0) = 0

isnan(0.0 / 0.0) = 1

isnan(Inf - Inf) = 1

参考

C11标准(ISO / IEC 9899:2011): 7.12.3.4伊斯兰宏观(p:236-237)

C99标准(ISO / IEC 9899:1999): 7.12.3.4 isnan宏(p:217)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值