先頭へ戻る

FE_DIVBYZERO | Programming Place Plus C言語編 標準ライブラリのリファレンス

Programming Place Plus トップページ -- C言語編 -- 標準ライブラリのリファレンス(名前順)

Programming Place Plus トップページ -- C言語編 -- 標準ライブラリのリファレンス(ヘッダ別)

先頭へ戻る

FE_DIVBYZERO

概要

浮動小数点数の演算結果が無限大になったことを表す浮動小数点例外。

ヘッダ

fenv.h

形式

#define FE_DIVBYZERO 0x00000008

置換結果

ほかの浮動小数点例外を表すマクロの置換結果とは異なる整数型の定数式。これらのマクロ同士でビット論理和を取ることができる。

詳細

計算結果が無限大になる値域エラーが発生したときに起こる浮動小数点例外。名前の通り、典型的には浮動小数点数のゼロ除算によって発生する。
標準ライブラリの数学関数においては、「math_errhandling & MATH_ERREXCEPT」が 0以外になる環境でのみ、浮動小数点例外を起こす。
浮動小数点例外が起きると、対応する浮動小数点状態フラグをセットする。浮動小数点状態フラグを判定する際に、fetestexcept関数を使うが、その実引数にこのマクロを使用できる。

注意

このマクロは、処理系がこの浮動小数点例外をサポートしない場合には定義されない。
浮動小数点例外を使用する場合、標準プラグマ FENV_ACCESS の状態を ON にしておかなければならない。状態が OFF の場合の動作は未定義である。VisualStudio 2017 の場合、この標準プラグマがなく、代わりに #pragma fenv_access を用いる。

使用例

#include <fenv.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 = 2.0 / 0.0;
    if( fetestexcept(FE_DIVBYZERO) ){
        puts( "FE_DIVBYZERO" );
    }

    return 0;
}

実行結果

FE_DIVBYZERO

関連

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

解説章

第48章


参考リンク


------------------------------------------------------------------------

更新履歴

'2019/2/12 VisualStudio 2015 の対応終了。

'2018/4/21 新規作成。


------------------------------------------------------------------------

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

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

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

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
Twitter でツイート Twitter をフォロー LINE で送る
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー