在头文件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++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。