HUGE_VALF, HUGE_VAL, HUGE_VALL
来自cppreference.com
在标头 <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 和 double 重载。这样就存在一个问题:float 重载不能返回 HUGE_VAL 来表示上溢,因为该宏不一定能表示为 float。
LWG 问题 357 试图解决该问题。LWG 发现 C99 也有同样的问题(C99 也添加了 float 和 double 重载),并且 C99 通过添加宏 HUGE_VALF 和 HUGE_VALL 来解决这个问题。因此 LWG 357 被关闭,并且 C++11 采用了 C99 的解决方案。
参阅
(C++11) |
求值为正无穷大或保证使 float 上溢的值 (宏常量) |