std::feraiseexcept
From cppreference.com
| ヘッダー <cfenv>で定義 |
||
| int feraiseexcept( int excepts ); |
(C++11以降) | |
excepts にリストされているすべての浮動小数点例外を発生させようとします (これは 浮動小数点例外マクロのビットごとのORです)。例外のいずれかが 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 のドキュメント (feraiseexceptについて)
| |