- 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
广告