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 <cfenv> #include <iostream> // #pragma STDC FENV_ACCESS ON int main() { std::feclearexcept(FE_ALL_EXCEPT); const int r = std::feraiseexcept(FE_UNDERFLOW | FE_DIVBYZERO); std::cout << "Raising divbyzero and underflow simultaneously " << (r ? "fails" : "succeeds") << " and results in\n"; const 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) |
确定哪些指定的浮点状态标志已设置 (函数) |
C 文档 for feraiseexcept
|