C/C++ NaN(Not a Number)

最后更新于:2020-07-30 19:56:25

一.NaN(Not a Number)错误简介

NaN(Not a Number)表示一个无效的数字,或者该数字未经初始化。

在数据处理输入输出时,极有可能遇到数据读入空值,例如:运算中分母为00.0;对负数取平方根等操作,这将产生NaN

二.NAN的产生原因

NaN: not a number,表示“无效数字”,产生NaN的原因有以下几种:

1.对负数开方,如 : \sqrt {-1} ;

2.对负数求对数,如:log(−1.0);

3.分母为0,如:\frac {8}{0}

三.输出NaN演示

C语言中,可以使用 printf函数来输出一个NaN值,请看下面的例子:

/************************************************************************/
/*@文件名      : NaN(Not a Number).cpp
/*@日  期      : 2020/7/17 19:37
/*@作  者      : 猿说编程
/*@公众号      : 猿说编程
/*@博客        : www.shuopython.com
/*@描述        : NaN(Not a Number) - C/C++教程
/************************************************************************/

#include <stdio.h> /* printf */
#include <math.h> /* sqrt */
int main()
{
    double result = sqrt(-100);
    printf("result = %lf\n", result);
    return 0;
}

/*
输出:
result = -nan(ind)
*/

三.检测NaN(Not a Number)错误

下面几个宏即包含在math.h头文件,可用于判断一个表达式的结果是否为infnan或其他。使用时包括include<math.h>

#include<math.h>

int isfinite(x);//判断x是否有限,是返回1,其它返回0;
int isnormal(x);//判断x是否为一个数(非inf或nan),是返回1,其它返回0;
int isnan(x);//当x时nan返回1,其它返回0;
int isinf(x);//当x是正无穷是返回1,当x是负无穷时返回-1,其它返回0。有些编译器不区分。


猜你喜欢

1. 三目运算符

2. 逗号表达式

3. wprintf输出中文乱码

4. sizeof和strlen函数区别

5. unicode和多字节区别




转载请注明: 猿说编程 » C/C++教程 » NaN(Not a Number)



技术交流、商务合作请直接联系博主
扫码或搜索:猿说编程

python/C++教程

猿说编程
微信公众号 扫一扫关注

赞赏

微信赞赏支付宝赞赏