ERANGE 是 errno.h 头文件中定义的一个**宏**。此宏用于显示范围错误,当输入参数超出定义数学函数的范围时会发生此错误,并且 errno 被设置为 ERANGE。
#define ERANGE some_value;
ERANGE 宏不接受任何参数。参数超出范围意味着,考虑 pow 函数溢出的情况。
宏 ERANGE 不返回任何值,它扩展为一个非零整数常量,其值由实现定义。
#include <stdio.h>
#include <errno.h>
#include <math.h>
int main () {
double k;
double v;
k = 2.000000;
v = log(k);
if( errno == ERANGE ) {
printf("Log(%f) is said to be out of range\n", k);
} else {
printf("Log(%f) is %f\n", k, v);
}
k = 1.000000;
v = log(k);
if( errno == ERANGE ) {
printf("Log(%f) is said to be out of range\n", k);
} else {
printf("Log(%f) is %f\n", k, v);
}
k = 0.000000;
v = log(k);
if( errno == ERANGE ) {
printf("Log(%f) is said to be out of range\n", k);
} else {
printf("Log(%f) is %f\n", k, v);
}
return 0;
}
输出
Log(2.000000) is 0.693147 Log(1.000000) is 0.000000 Log(0.000000) is said to be out of range