在頭文件fenv.h中指定了C /C++中的fegetexceptflag()函數,並獲取浮點異常標誌。此函數將引發的異常存儲在flagp指定的點中。
用法:
int fegetexceptflag(fexcept_t* flagp, int excepts)
參數:該函數接受兩個強製性參數,如下所述:
- flagp:表示指向存儲表示形式的fexcept_t對象的指針。
- excepts:表示位掩碼值。
宏->說明:
- FE_DIVBYZERO->極點錯誤:被零除。
- FE_INEXACT->不精確:結果不準確。
- FE_INVALID->域錯誤:參數中至少一個是未為其定義函數的值。
- FE_OVERFLOW->溢出範圍錯誤:結果太大。
- FE_UNDERFLOW->下溢範圍錯誤:結果太小。
- FE_ALL_EXCEPT->所有例外。
返回值:該函數返回兩個值,如下所示:
- 零:成功。
- 非零:失敗時
以下示例程序旨在說明上述函數:
程序1:
// C++ program to illustrate
// fegetexceptflag() function
#include <bits/stdc++.h>
using namespace std;
int main()
{
// bitmask value
fexcept_t excepts;
// divided by zero exception
feraiseexcept(FE_DIVBYZERO);
// current state is saved
fegetexceptflag(&excepts, FE_ALL_EXCEPT);
cout << "Exception raised -> \n";
// print the exception occurred
if (fetestexcept(FE_ALL_EXCEPT)) {
if (fetestexcept(FE_DIVBYZERO))
cout << "FE_DIVBYZERO \n";
if (fetestexcept(FE_INEXACT))
cout << "FE_INEXACT \n";
if (fetestexcept(FE_INVALID))
cout << "FE_INVALID \n";
if (fetestexcept(FE_OVERFLOW))
cout << "FE_OVERFLOW \n";
if (fetestexcept(FE_UNDERFLOW))
cout << "FE_UNDERFLOW \n";
if (fetestexcept(FE_ALL_EXCEPT))
cout << "FE_ALL_EXCEPT \n";
}
else
cout << "None";
return 0;
}
輸出:
Exception raised -> FE_DIVBYZERO FE_ALL_EXCEPT
程序2:
// C++ program to illustrate
// fegetexceptflag() function
#include <bits/stdc++.h>
using namespace std;
int main()
{
// bitmask value
fexcept_t excepts;
// raised exception
feraiseexcept(FE_ALL_EXCEPT);
// current state is saved
fegetexceptflag(&excepts, FE_ALL_EXCEPT);
cout << "Exception raised -> \n";
// print the exception occurred
if (fetestexcept(FE_ALL_EXCEPT)) {
if (fetestexcept(FE_DIVBYZERO))
cout << "FE_DIVBYZERO \n";
if (fetestexcept(FE_INEXACT))
cout << "FE_INEXACT \n";
if (fetestexcept(FE_INVALID))
cout << "FE_INVALID \n";
if (fetestexcept(FE_OVERFLOW))
cout << "FE_OVERFLOW \n";
if (fetestexcept(FE_UNDERFLOW))
cout << "FE_UNDERFLOW \n";
if (fetestexcept(FE_ALL_EXCEPT))
cout << "FE_ALL_EXCEPT \n";
}
else
cout << "None";
return 0;
}
輸出:
Exception raised -> FE_DIVBYZERO FE_INEXACT FE_INVALID FE_OVERFLOW FE_UNDERFLOW FE_ALL_EXCEPT
相關用法
- C++ div()用法及代碼示例
- C++ fma()用法及代碼示例
- C++ log()用法及代碼示例
- C++ map key_comp()用法及代碼示例
- C++ wcstok()用法及代碼示例
- C++ wcsstr()用法及代碼示例
- C語言 strlwr()用法及代碼示例
- C++ wcsncpy()用法及代碼示例
- C++ real()用法及代碼示例
- C++ imag()用法及代碼示例
注:本文由純淨天空篩選整理自AmanSrivastava1大神的英文原創作品 fegetexceptflag() function in C/C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。