跳到主要内容

HUGE_VALF, HUGE_VAL, HUGE_VALL

描述

HUGE_VALFHUGE_VALHUGE_VALL 扩展为正浮点常量表达式,当溢出时,它们与浮点函数和运算符返回的值相等(参见 math_errhandling)。

常量解释
HUGE_VALF扩展为表示溢出的正浮点表达式
HUGE_VAL扩展为表示溢出的正双精度浮点表达式,不一定能表示为 float 类型
HUGE_VALL扩展为表示溢出的正长双精度浮点表达式,不一定能表示为 float 或 double 类型

在支持浮点无穷大的实现上,这些宏总是分别扩展为 floatdoublelong double 的正无穷大。

声明

#define HUGE_VAL  /* implementation defined */
自 C++11 起
#define HUGE_VALF /* implementation defined */

#define HUGE_VALL /* implementation defined */

备注

在不支持浮点无穷大的实现上,这些宏扩展为其各自类型的最大有限数。

C++98 添加了数学函数的 floatlong double 重载。存在一个问题,即 float 重载无法返回 HUGE_VAL 来指示溢出,因为此宏不能保证可表示为 float

LWG issue 357 旨在解决此问题。LWG 发现 C99 存在相同的问题(C99 也添加了 floatlong double 重载),并且 C99 引入了新的宏 HUGE_VALFHUGE_VALL 来解决此问题。因此,该问题已关闭,C99 的解决方案在 C++11 中被采纳。

HUGE_VALF, HUGE_VAL, HUGE_VALL

描述

HUGE_VALFHUGE_VALHUGE_VALL 扩展为正浮点常量表达式,当溢出时,它们与浮点函数和运算符返回的值相等(参见 math_errhandling)。

常量解释
HUGE_VALF扩展为表示溢出的正浮点表达式
HUGE_VAL扩展为表示溢出的正双精度浮点表达式,不一定能表示为 float 类型
HUGE_VALL扩展为表示溢出的正长双精度浮点表达式,不一定能表示为 float 或 double 类型

在支持浮点无穷大的实现上,这些宏总是分别扩展为 floatdoublelong double 的正无穷大。

声明

#define HUGE_VAL  /* implementation defined */
自 C++11 起
#define HUGE_VALF /* implementation defined */

#define HUGE_VALL /* implementation defined */

备注

在不支持浮点无穷大的实现上,这些宏扩展为其各自类型的最大有限数。

C++98 添加了数学函数的 floatlong double 重载。存在一个问题,即 float 重载无法返回 HUGE_VAL 来指示溢出,因为此宏不能保证可表示为 float

LWG issue 357 旨在解决此问题。LWG 发现 C99 存在相同的问题(C99 也添加了 floatlong double 重载),并且 C99 引入了新的宏 HUGE_VALFHUGE_VALL 来解决此问题。因此,该问题已关闭,C99 的解决方案在 C++11 中被采纳。