HUGE_VALF, HUGE_VAL, HUGE_VALL
|
ヘッダーで定義
<cmath>
|
||
|
#define HUGE_VALF /* implementation defined */
|
(C++11以降) | |
|
#define HUGE_VAL /* implementation defined */
|
||
|
#define HUGE_VALL /* implementation defined */
|
(C++11以降) | |
マクロ HUGE_VALF 、 HUGE_VAL および HUGE_VALL は、オーバーフローが発生した場合に浮動小数点関数や演算子が返す値と等価となる正の浮動小数点定数式に展開されます( math_errhandling を参照)。
| 定数 | 説明 |
HUGE_VALF
|
オーバーフローを示す正の float 式に展開される |
HUGE_VAL
|
オーバーフローを示す正の double 式に展開される。 float として表現可能とは限らない |
HUGE_VALL
|
オーバーフローを示す正の long double 式に展開される。 float または double として表現可能とは限らない |
浮動小数点の無限大をサポートする実装では、これらのマクロは常にそれぞれ float 、 double 、および 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 が導入されました。そのため、このissueはクローズされ、C99の解決策がC++11で採用されました。
関連項目
|
(C++11)
|
正の無限大または
float
のオーバーフローが保証される値に評価される
(マクロ定数) |
|
Cドキュメント
for
HUGE_VAL
|
|