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

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

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


ERANGE

概要

数学関数の値域エラーを表すエラーコード。

ヘッダ

errno.h

形式

#define ERANGE 34

置換結果

0以外の何らかの整数。

詳細

数学関数の値域エラー(RANGE Error)を表し、errno に格納される値である。なお、「値域」は「ちいき」と読む)。

関数の数学的な結果の絶対値が大きすぎるため、指定の型で表現できないことを表す。結果の値が大きすぎる場合はオーバーフロー、小さすぎる場合はアンダーフローと呼ばれる。オーバーフローの場合は、「math_errhandling & MATH_ERRNO」が 0以外の場合に、errno に ERANGE を格納する。アンダーフローの場合に同様のことを行うかどうかは、処理系定義である。

注意

使用例

#include <stdio.h>
#include <math.h>
#include <errno.h>
#include <float.h>

int main(void)
{
    errno = 0;
    double x = pow(DBL_MAX, 2.0);
    if (errno == ERANGE) {
        puts("pow関数の結果が表現不可能");
        return 0;
    }
    printf("%lf\n", x);
}

実行結果:

pow関数の結果が表現不可能

関連

標準には、他のエラーコードとして、EDOMEILSEQ が定義されている。
値域エラーの発生時に浮動小数点例外(FE_OVERFLOWFE_DIVBYZEROFE_UNDERFLOW)を発生させることがある。

解説章

第48章


参考リンク


更新履歴

’2018/4/22 解説中で C95 を(C89 に対して)特別扱いしないように修正。そもそもC言語編は C95ベースなので、余計な説明は省く。

’2018/4/21 「詳細」を書きなおした。

’2018/4/6 C99以降での errno の扱いについて追記。

’2018/1/22 新規作成。



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

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

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

Programming Place Plus のトップページへ



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