std::feraiseexcept
来自cppreference.com
定义于头文件 <cfenv>
|
||
int feraiseexcept( int excepts ); |
(C++11 起) | |
试图引发所有列于 excepts
(浮点异常宏的逐位或)的浮点异常。若异常之一是 FE_OVERFLOW 或 FE_UNDERFLOW ,则此函数还会再引发 FE_INEXACT 。引发异常所用的顺序是未指定的,除了 FE_OVERFLOW 和 FE_UNDERFLOW 始终先于 FE_INEXACT 引发。
参数
excepts | - | 列出要引发的异常标志的位掩码 |
返回值
若已引发所有列出的异常则为 0 ,否则为非零值。
示例
运行此代码
#include <iostream> #include <cfenv> #pragma STDC FENV_ACCESS ON int main() { std::feclearexcept(FE_ALL_EXCEPT); int r = std::feraiseexcept(FE_UNDERFLOW | FE_DIVBYZERO); std::cout << "Raising divbyzero and underflow simultaneously " << (r?"fails":"succeeds") << " and results in\n"; int e = std::fetestexcept(FE_ALL_EXCEPT); if (e & FE_DIVBYZERO) { std::cout << "division by zero\n"; } if (e & FE_INEXACT) { std::cout << "inexact\n"; } if (e & FE_INVALID) { std::cout << "invalid\n"; } if (e & FE_UNDERFLOW) { std::cout << "underflow\n"; } if (e & FE_OVERFLOW) { std::cout << "overflow\n"; } }
输出:
Raising divbyzero and underflow simultaneously succeeds and results in division by zero underflow
参阅
(C++11) |
清除指定的浮点状态标志 (函数) |
(C++11) |
确定设置了哪个指定的浮点状态标志 (函数) |