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、そうでなければ非ゼロの値。
[編集] 例
Run this code
#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) |
指定された浮動小数点ステータスフラグのいずれが設定されているか調べます (関数) |
feraiseexcept の C言語リファレンス
|