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

先頭へ戻る

math_errhandling

概要 数学関数でエラーが発生したときの動作を定義する
ヘッダ math.h
形式 #define math_errhandling (MATH_ERRNO | MATH_ERREXCEPT)
置換結果 MATH_ERRNOMATH_ERREXCEPT、MATH_ERRNO | MATH_ERREXCEPT のいずれか。いずれにしても、int型の値である。
詳細 数学関数がエラーを発生させたとき、それをどのように伝えるかを定義している。
定義域エラーや値域エラーが発生したときに、「math_errhandling & MATH_ERRNO」が 0以外になる場合は、errno に適切なエラーコードを設定し、「math_errhandling & MATH_ERREXCEPT」が 0以外になる場合は、浮動小数点例外を発生させる。2つは同時に満たされることもある。値域エラーが浮動小数点演算のアンダーフローによって起こった場合の動作は処理系定義である。
発生する浮動小数点例外の種類は、定義域エラーでは FE_INVALID、数学的な結果が有限の場合のオーバーフローでは FE_OVERFLOW、無限の場合のオーバーフローでは FE_DIVBYZERO、アンダーフローでは FE_UNDERFLOW である。
なお、このマクロや浮動小数点例外のしくみは C99 で追加されたものである。以前の規格では常に errno を使っていた。
処理系ごとに置換結果は異なり、プログラムが実行されている間、値が変化することはない。また、マクロではない実装もあり得るが、特に気にする必要はない。
注意
使用例
#include <math.h>
#include <stdio.h>

int main(void)
{
    printf( "%d\n", math_errhandling & MATH_ERRNO );
    printf( "%d\n", math_errhandling & MATH_ERREXCEPT );

    return 0;
}

実行結果

1
2
関連
解説章 第48章


参考リンク

更新履歴

'2018/4/21 新規作成。





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

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

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

Programming Place Plus のトップページへ


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