std:: feraiseexcept
From cppreference.net
|
定义于头文件
<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
|
|