C言語編 標準ライブラリのリファレンス FE_OVERFLOW

先頭へ戻る

FE_OVERFLOW

概要 浮動小数点の演算結果が表現可能な範囲を超えたことを表す浮動小数点例外
ヘッダ fenv.h
形式 #define FE_OVERFLOW 0x00000004
置換結果 ほかの浮動小数点例外を表すマクロの置換結果とは異なる整数型の定数式。これらのマクロ同士でビット論理和を取ることができる。
詳細 計算結果が表現可能な範囲を超えてしまうような浮動小数点演算を行ったときに起こる浮動小数点例外。
標準ライブラリの数学関数においては、「math_errhandling & MATH_ERREXCEPT」が 0以外になる環境でのみ、値域エラーが発生したときに、この浮動小数点例外を起こす。
浮動小数点例外が起きると、対応する浮動小数点状態フラグをセットする。浮動小数点状態フラグを判定する際に、fetestexcept関数を使うが、その実引数にこのマクロを使用できる。
注意 このマクロは、処理系がこの浮動小数点例外をサポートしない場合には定義されない。
浮動小数点例外を使用する場合、標準プラグマ FENV_ACCESS の状態を ON にしておかなければならない。状態が OFF の場合の動作は未定義である。VisualStudio 2015/2017 の場合、この標準プラグマが存在しておらず、代わりに #pragma fenv_access を用いる。
使用例
#include <fenv.h>
#include <float.h>
#include <stdio.h>

#if defined(_MSC_VER)
#pragma fenv_access (on)
#else
#pragma STDC FENV_ACCESS ON
#endif

int main(void)
{
    feclearexcept( FE_ALL_EXCEPT );
    double x = DBL_MAX * 2.0;
    if( fetestexcept(FE_OVERFLOW) ){
        puts( "FE_OVERFLOW" );
    }

    return 0;
}

実行結果

FE_OVERFLOW
関連 標準で定義されている浮動小数点例外にはほかに、FE_DIVBYZEROFE_INEXACTFE_INVALIDFE_UNDERFLOW がある。また、処理系が定義するすべての浮動小数点例外をビット論理和で結合した FE_ALL_EXCEPT がある。
解説章 第48章


参考リンク

更新履歴

'2018/4/23 新規作成。





標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ


このエントリーをはてなブックマークに追加
rss1.0 取得ボタン RSS