名前空間
変種
操作

std::fetestexcept

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

浮動小数点例外の指定されたサブセットが現在設定されているかどうか調べます。 引数 excepts浮動小数点例外マクロのビット単位の論理和です。

目次

[編集]引数

excepts - 調べる例外フラグを指定するビットマスク

[編集]戻り値

excepts に含まれていて、かつ現在設定されている浮動小数点例外に対応する、浮動小数点例外マクロのビット単位の論理和。

[編集]

#include <iostream>#include <cfenv>#include <cmath>   #pragma STDC FENV_ACCESS ON   volatiledouble zero =0.0;// volatile not needed where FENV_ACCESS is supportedvolatiledouble one =1.0;// volatile not needed where FENV_ACCESS is supported   int main(){std::feclearexcept(FE_ALL_EXCEPT);std::cout<<"1.0/0.0 = "<<1.0/ zero <<'\n';if(std::fetestexcept(FE_DIVBYZERO)){std::cout<<"division by zero reported\n";}else{std::cout<<"divsion by zero not reported\n";}   std::feclearexcept(FE_ALL_EXCEPT);std::cout<<"1.0/10 = "<< one/10<<'\n';if(std::fetestexcept(FE_INEXACT)){std::cout<<"inexact result reported\n";}else{std::cout<<"inexact result not reported\n";}   std::feclearexcept(FE_ALL_EXCEPT);std::cout<<"sqrt(-1) = "<<std::sqrt(-1)<<'\n';if(std::fetestexcept(FE_INVALID)){std::cout<<"invalid result reported\n";}else{std::cout<<"invalid result not reported\n";}}

出力:

1.0/0.0 = inf division by zero reported 1.0/10 = 0.1 inexact result reported sqrt(-1) = -nan invalid result reported

[編集]関連項目

指定された浮動小数点ステータスフラグをクリアします
(関数)[edit]
fetestexceptC言語リファレンス
close