C語言fenv頭文件(fenv.h)中fetestexcept函數的用法及代碼示例。
用法:
int fetestexcept (int excepts);
測試浮點異常
返回的值是按位或子集的表示excepts當前在浮點環境。或為零(如果沒有例外)excepts目前已設定。
調用此函數的程序應確保編譯指示FENV_ACCESS已啟用該調用。
參數
- excepts
- 位掩碼值:任意數量的組合(按位或)浮點異常實現支持的值:
宏值 描述 FE_DIVBYZERO 極點錯誤:除以零或其他一些漸近無限結果(來自有限參數)。 FE_INEXACT 不精確:結果不準確。 FE_INVALID 域錯誤:參數中的至少一個是未為其定義函數的值。 FE_OVERFLOW 溢出範圍錯誤:結果的大小太大,無法表示為返回類型的值。 FE_UNDERFLOW 下溢範圍錯誤:結果的大小太小而無法表示為返回類型的值。 FE_ALL_EXCEPT 所有異常(選擇實現支持的所有異常)。 FE_
)。
返回值
零(如果沒有例外)excepts被設置。否則,例外情況(包括excepts)當前設置。
示例
/* fetestexcept example */
#include <stdio.h> /* puts */
#include <fenv.h> /* feraiseexcept, fetestexcept, FE_* */
#pragma STDC FENV_ACCESS on
double fn (double x) {
/* some function for which zero is a domain and range error */
if (x==0.0) feraiseexcept(FE_INVALID|FE_OVERFLOW);
return x;
}
int main ()
{
int fe;
feclearexcept (FE_ALL_EXCEPT);
fn (0.0);
/* testing for single exception: */
if (fetestexcept(FE_OVERFLOW)) puts ("FE_OVERFLOW is set");
/* testing multiple exceptions: */
fe = fetestexcept (FE_ALL_EXCEPT);
puts ("The following exceptions are set:");
if (fe & FE_DIVBYZERO) puts ("FE_DIVBYZERO");
if (fe & FE_INEXACT) puts ("FE_INEXACT");
if (fe & FE_INVALID) puts ("FE_INVALID");
if (fe & FE_OVERFLOW) puts ("FE_OVERFLOW");
if (fe & FE_UNDERFLOW) puts ("FE_UNDERFLOW");
return 0;
}
可能的輸出:
FE_OVERFLOW is set The following exceptions are set: FE_INVALID FE_OVERFLOW |
相關用法
- C語言 feclearexcept用法及代碼示例
- C語言 feraiseexcept用法及代碼示例
- C語言 fegetround用法及代碼示例
- C語言 fesetround用法及代碼示例
- C語言 feholdexcept用法及代碼示例
- C語言 feupdateenv用法及代碼示例
注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C fetestexcept function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。