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言語リファレンス |