名前空間
変種
操作

std::feraiseexcept

提供: cppreference.com
< cpp‎ | numeric‎ | fenv
 
 
 
浮動小数点環境
関数
feraiseexcept
(C++11)
(C++11)(C++11)
(C++11)(C++11)
マクロ定数
(C++11)
 
ヘッダ <cfenv> で定義
int feraiseexcept(int excepts );
(C++11以上)

excepts (浮動小数点例外マクロのビット単位の論理和) で指定されたすべての浮動小数点例外の発生を試みます。 例外のひとつが FE_OVERFLOW または FE_UNDERFLOW の場合、この関数は FE_INEXACT を追加で発生させるかもしれません。 例外が発生する順序は未規定です。 ただし FE_OVERFLOW および FE_UNDERFLOW は必ず FE_INEXACT より前に発生します。

目次

[編集]引数

excepts - 発生させる例外フラグを指定するビットマスク

[編集]戻り値

指定された例外がすべて発生した場合は 0、そうでなければ非ゼロの値。

[編集]

#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

[編集]関連項目

指定された浮動小数点ステータスフラグをクリアします
(関数)[edit]
指定された浮動小数点ステータスフラグのいずれが設定されているか調べます
(関数)[edit]
feraiseexceptC言語リファレンス
close