C言語編 リファレンス

標準ライブラリ 「H」

「H」で始まる標準ライブラリ関数及び、その他の定義です。

HUGE_VAL

概要 数学系関数の結果がオーバーフローしている際の戻り値の絶対値。
必要なヘッダファイル math.h
形式 extern double _HUGE;
#define HUGE_VAL _HUGE
置換結果 正の double型の値。
詳細 数学系の関数の結果が、オーバーフローしている際に、戻り値として返される値の絶対値である。 実際に返される値の符号は、正しい結果の符号が付けられるので、+HUGE_VAL か -HUGE_VAL になる。
処理系によっては、この値を正の無限大の意味で使うことができる。
注意
使用例
#include <stdio.h>
#include <math.h>

int main(int argc, char* argv[])
{
	double ans = pow( 100.0, 1000.0 );

	if( fabs(ans) == HUGE_VAL ){
		puts( "オーバーフローを検出" );
	}

	return 0;
}

実行結果:

オーバーフローを検出
関連 C99 には、float型の HUGE_VALF と、long double型の HUGE_VALL がある。
本編で解説している章

HUGE_VALF

概要 数学系関数の結果がオーバーフローしている際の戻り値の絶対値。
必要なヘッダファイル math.h
形式 extern float _HUGEF;
#define HUGE_VALF _HUGEF
置換結果 正の float型の値。
詳細 数学系の関数の結果が、オーバーフローしている際に、戻り値として返される値の絶対値である。 実際に返される値の符号は、正しい結果の符号が付けられるので、+HUGE_VALF か -HUGE_VALF になる。
処理系によっては、この値を正の無限大の意味で使うことができる。
注意
使用例
// VisualC++ 2013 では、HUGE_VALF との比較のところで warning が出る。

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

int main(int argc, char* argv[])
{
	float ans = powf( 100.0f, 1000.0f );

	if( fabsf(ans) == HUGE_VALF ){
		puts( "オーバーフローを検出" );
	}

	return 0;
}

実行結果:

オーバーフローを検出
関連 double型の HUGE_VAL と、long double型の HUGE_VALL がある。
本編で解説している章

HUGE_VALL

概要 数学系関数の結果がオーバーフローしている際の戻り値の絶対値。
必要なヘッダファイル math.h
形式 extern long double _HUGEL;
#define HUGE_VALL _HUGEL
置換結果 正の long double型の値。
詳細 数学系の関数の結果が、オーバーフローしている際に、戻り値として返される値の絶対値である。 実際に返される値の符号は、正しい結果の符号が付けられるので、+HUGE_VALL か -HUGE_VALL になる。
処理系によっては、この値を正の無限大の意味で使うことができる。
注意
使用例
#include <stdio.h>
#include <math.h>

int main(int argc, char* argv[])
{
	long double ans = powl( 100.0L, 1000.0L );

	if( fabsl(ans) == HUGE_VALL ){
		puts( "オーバーフローを検出" );
	}

	return 0;
}

実行結果:

オーバーフローを検出
関連 float型の HUGE_VALF と、double型の HUGE_VALL がある。
本編で解説している章

参考リンク

更新履歴

'2017/4/15 HUGE_VALFマクロ、HUGE_VALLマクロの説明を追加。

'2010/9/19 HUGE_VALマクロの説明を追加。

'2010/8/27 新規作成。



リファレンスのトップページへ

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

Programming Place Plus のトップページへ