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はクローズされ、C++11ではC99の解決策が採用されました。
関連項目
|
(C++11)
|
正の無限大または
float
のオーバーフローが保証される値に評価される
(マクロ定数) |
|
Cドキュメント
for
HUGE_VAL
|
|