- C 标准库
- C 库 - 首页
- C 库 - <assert.h>
- C 库 - <complex.h>
- C 库 - <ctype.h>
- C 库 - <errno.h>
- C 库 - <fenv.h>
- C 库 - <float.h>
- C 库 - <inttypes.h>
- C 库 - <iso646.h>
- C 库 - <limits.h>
- C 库 - <locale.h>
- C 库 - <math.h>
- C 库 - <setjmp.h>
- C 库 - <signal.h>
- C 库 - <stdalign.h>
- C 库 - <stdarg.h>
- C 库 - <stdbool.h>
- C 库 - <stddef.h>
- C 库 - <stdio.h>
- C 库 - <stdlib.h>
- C 库 - <string.h>
- C 库 - <tgmath.h>
- C 库 - <time.h>
- C 库 - <wctype.h>
- C 标准库资源
- C 库 - 快速指南
- C 库 - 有用资源
- C 库 - 讨论
C 库 - ERANGE 宏
C 库的 ERANGE 宏表示范围错误,如果输入参数超出数学函数定义的范围,则会发生此错误,并且 errno 将设置为 ERANGE。
与数学函数相关的 ERANGE 设置了输入范围。通过将 errno 设置为 ERANGE,它表示运算结果在有效范围内不可表示。
语法
以下是 C 库 ERANGE 宏的语法。
#define ERANGE some_value
参数
此函数是宏,因此不接受任何参数。
返回值
此函数不返回任何值。
示例 1
以下是显示 ERANGE 宏用法的 C 库程序。
#include <stdio.h> #include <errno.h> #include <math.h> int main () { double x; double value; x = 2.000000; value = log(x); if( errno == ERANGE ) { printf("Log(%f) is out of range\n", x); } else { printf("Log(%f) = %f\n", x, value); } x = 1.000000; value = log(x); if( errno == ERANGE ) { printf("Log(%f) is out of range\n", x); } else { printf("Log(%f) = %f\n", x, value); } x = 0.000000; value = log(x); if( errno == ERANGE ) { printf("Log(%f) is out of range\n", x); } else { printf("Log(%f) = %f\n", x, value); } return 0; }
输出
编译上述代码后,将产生以下结果:
Log(2.000000) = 0.693147 Log(1.000000) = 0.000000 Log(0.000000) is out of range
示例 2
在这里,我们正在构建一个程序来使用数学函数 log() 和 exp() 计算对数,这些函数会遇到范围错误。
#include <stdio.h> #include <math.h> #include <errno.h> int main() { double x = 1000; double result = exp(x); if (errno == ERANGE) { printf("exp(%f) is out of range\n", x); } else { printf("exp(%f) = %f\n", x, result); } return 0; }
输出
执行上述代码后,我们将得到以下结果:
exp(1000.000000) is out of range
广告