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

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

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


FE_INVALID

概要

結果が定義されない浮動小数点数の演算を行ったことを表す浮動小数点例外

ヘッダ

fenv.h

形式

#define FE_INVALID 0x00000010

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

詳細

計算結果が定義されないような浮動小数点演算を行ったときに起こる浮動小数点例外。たとえば、0 を 0 で割ったり、無限大から無限大を引くような演算が挙げられる。
標準ライブラリの数学関数においては、「math_errhandling & MATH_ERREXCEPT」が 0以外になる環境でのみ、定義域エラーが発生したときに、この浮動小数点例外を起こす。
浮動小数点例外が起きると、対応する浮動小数点状態フラグをセットする。浮動小数点状態フラグを判定する際に、fetestexcept関数を使うが、その実引数にこのマクロを使用できる。

注意

このマクロは、処理系がこの浮動小数点例外をサポートしない場合には定義されない。
浮動小数点例外を使用する場合、標準プラグマ FENV_ACCESS の状態を ON にしておかなければならない。状態が OFF の場合の動作は未定義である。Visual Studio 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 = 0.0 / 0.0;
    if (fetestexcept(FE_INVALID)) {
        puts("FE_INVALID");
    }
}

実行結果

FE_INVALID

関連

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

解説章

第48章


参考リンク


更新履歴

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

’2018/4/23 新規作成。



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

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

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

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る