HUGE_VALF, HUGE_VAL, HUGE_VALL
来自 cppreference.cn
定义于头文件 <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 问题 357 以解决此问题。LWG 发现 C99 也存在同样的问题(C99 中也添加了 float 和 long double 重载),并且 C99 引入了新的宏 HUGE_VALF 和 HUGE_VALL 来解决该问题。因此,该问题被关闭,并且 C99 的解决方案在 C++11 中被采纳。
[编辑] 参见
(C++11) |
求值为正无穷大或保证 float 溢出的值 (宏常量) |
C 文档 for HUGE_VAL
|