HUGE_VALF, HUGE_VAL, HUGE_VALL
来自 cppreference.cn
定义于头文件 <cmath> |
||
#define HUGE_VALF /* 由实现定义 */ |
(C++11 起) | |
#define HUGE_VAL /* 由实现定义 */ |
||
#define HUGE_VALL /* 由实现定义 */ |
(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 存在相同的问题(C99 也添加了 float 和 long double 重载),并且 C99 引入了新的宏 HUGE_VALF 和 HUGE_VALL 来解决该问题。因此,该问题已关闭,C99 的解决方案在 C++11 中被采纳。
[编辑] 另请参阅
(C++11) |
评估为正无穷大或保证使 float 溢出的值 (宏常量) |
C 文档 关于 HUGE_VAL
|