std:: feraiseexcept
From cppreference.net
|
定義済みヘッダー
<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ドキュメント
for
feraiseexcept
|
|