C 语言标准库宏 - EDOM
C 语言标准库宏 EDOM 表示一个域错误,当输入参数超出数学函数定义的域时,errno 被设置为 EDOM
头文件
#include <errno.h>
宏声明
下面是 EDOM 宏的声明
#define EDOM some_value
参数
无
返回值
无
范例
输出 EDOM
宏的具体值
/** * file: main.c * author: 简单教程(www.twle.cn) * * Copyright © 2015-2065 www.twle.cn. All rights reserved. */ #include <stdio.h> #include <errno.h> #include <math.h> int main() { printf("the value of EDOM is:%d\n",EDOM); return 0; }
编译运行以上范例,输出结果如下
$ gcc main.c && ./a.out
the value of EDOM is:33
下面的实例演示了 EDOM 宏的用法
/** * file: main.c * author: 简单教程(www.twle.cn) * * Copyright © 2015-2065 www.twle.cn. All rights reserved. */ #include <stdio.h> #include <errno.h> #include <math.h> int main() { double val; errno = 0; val = sqrt(-10); if(errno == EDOM) { printf("Invalid value \n"); } else { printf("Valid value:%f\n",val); } errno = 0; val = sqrt(16); if(errno == EDOM) { printf("Invalid value\n"); } else { printf("Valid value:%f\n",val); } return(0); }
编译运行以上范例,输出结果如下
$ gcc main.c && ./a.out
Valid value:nan
Valid value:4.000000
在 MacOS 上 sqrt(-10); 竟然不会报错,反而会返回
nan
;