- 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 程式設計資源
- 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
廣告