先頭へ戻る

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

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

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

先頭へ戻る

ERANGE

概要

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

ヘッダ

errno.h

形式

#define ERANGE 34

置換結果

0以外の何らかの整数。

詳細

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

注意

使用例

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

int main(void)
{
    double x;

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

    return 0;
}

実行結果:

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

関連

標準には、他のエラーコードとして、EDOMEILSEQ が定義されている。
C99 では値域エラーの発生時に浮動小数点例外(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 でシェア
Twitter でツイート Twitter をフォロー LINE で送る
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー