名前空間
変種
操作

HUGE_VALF, HUGE_VAL, HUGE_VALL

From cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
共通の数学関数
関数
基本的な数学関数
(C++11)  
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
指数関数
(C++11)
(C++11)

(C++11)
(C++11)
べき乗関数
(C++11)
(C++11)
三角関数と
双曲線関数
(C++11)
(C++11)
(C++11)

誤差関数とガンマ関数
(C++11)
(C++11)
(C++11)
(C++11)
最近接整数への浮動小数点数操作
(C++11)(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
浮動小数点数の操作関数
(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)
(C++11)
分類と比較
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
マクロ定数
HUGE_VALFHUGE_VALHUGE_VALL
(C++11)(C++11)
(C++11)
(C++11)
分類
(C++11)(C++11)(C++11)(C++11)(C++11)


 
ヘッダー <cmath> で定義
#define HUGE_VALF /* 実装定義 */
(C++11以降)
#define HUGE_VAL  /* 実装定義 */
#define HUGE_VALL /* 実装定義 */
(C++11以降)

マクロ HUGE_VALFHUGE_VAL、および HUGE_VALL は、正の浮動小数点定数式に展開されます。これは、オーバーフローが発生した場合に浮動小数点関数や演算子が返す値と等しく比較されます(math_errhandling を参照)。

Constant 説明
HUGE_VALF オーバーフローを示す正の float 式に展開されます
HUGE_VAL オーバーフローを示す正の double 式に展開されます。必ずしも float として表現できるとは限りません。
HUGE_VALL オーバーフローを示す正の long double 式に展開されます。必ずしも float または double として表現できるとは限りません。

浮動小数点無限大をサポートする実装では、これらのマクロはそれぞれ floatdouble、および long double の正の無限大に常に展開されます。

[編集] 注意

浮動小数点無限大をサポートしない実装では、これらのマクロはそれぞれの型の最大有限数値に展開されます。

C++98 では、数学関数の float および long double オーバーロードが追加されました。問題は、float オーバーロードがオーバーフローを示すために HUGE_VAL を返せないことです。なぜなら、このマクロは float として表現できることが保証されていないからです。

この問題に対処するために LWG issue 357 が提起されました。LWG は C99 も同様の問題を抱えていること(float および long double オーバーロードは C99 でも追加されました)を発見し、C99 は問題を解決するために新しいマクロ HUGE_VALF および HUGE_VALL を導入しました。したがって、この問題はクローズされ、C99 の解決策は C++11 で採用されました。

[編集] 関連項目

(C++11)
正の無限大、または float 型でオーバーフローすることが保証される値に評価される
(マクロ定数) [編集]
C ドキュメントHUGE_VAL について)
English 日本語 中文(简体) 中文(繁體)