服裝企業(yè)營(yíng)銷(xiāo)網(wǎng)站建設(shè)百度推廣后臺(tái)登錄首頁(yè)
目錄
1.errno 變量
2.宏
1.errno 變量
errno.h?
聲明了一個(gè) int 類(lèi)型的 errno 變量,用來(lái)存儲(chǔ)錯(cuò)誤碼(正整數(shù))。
如果這個(gè)變量有非零值,表示已經(jīng)執(zhí)行的程序發(fā)生了錯(cuò)誤。
#include <errno.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>int main() {int x = -1;errno = 0;int y = sqrt(x);if (errno != 0) {fprintf(stderr, "sqrt error; program terminated.\n");exit(EXIT_FAILURE);}return 0;
}
上面示例中,計(jì)算一個(gè)負(fù)值的平方根是不允許的,會(huì)導(dǎo)致errno
不等于0
。
如果要檢查某個(gè)函數(shù)是否發(fā)生錯(cuò)誤,必須在即將調(diào)用該函數(shù)之前,將errno
的值置為0,防止其他函數(shù)改變errno
的值。
2.宏
變量errno
的值通常是兩個(gè)宏EDOM
或ERANGE
。這兩個(gè)宏都定義在errno.h
。它們表示調(diào)用數(shù)學(xué)函數(shù)時(shí),可能發(fā)生的兩種錯(cuò)誤。
- 定義域錯(cuò)誤(EDOM):傳遞給函數(shù)的一個(gè)參數(shù)超出了函數(shù)的定義域。例如,負(fù)數(shù)傳入
sqrt()
作為參數(shù)。 - 取值范圍錯(cuò)誤(ERANGE):函數(shù)的返回值太大,無(wú)法用返回類(lèi)型表示。例如,1000 傳入
exp()
作為參數(shù),因?yàn)?e^1000 太大,無(wú)法使用 double 類(lèi)型表示。
使用數(shù)學(xué)函數(shù)時(shí),可以將errno
的值與 EDOM 和 ERANGE 比較,用來(lái)確定到底發(fā)生了哪一類(lèi)錯(cuò)誤。