命名空间
变体
操作

HUGE_VALF, HUGE_VAL, HUGE_VALL

来自 cppreference.cn
< cpp‎ | numeric‎ | math
 
 
 
常用数学函数
函数
基本运算
(C++11)  
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
指数函数
(C++11)
(C++11)

(C++11)
(C++11)
幂函数
(C++11)
(C++11)
三角函数
双曲函数
(C++11)
(C++11)
(C++11)

误差函数和伽玛函数
(C++11)
(C++11)
(C++11)
(C++11)
最近整数浮点运算
(C++11)(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
浮点数操作函数
(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)
(C++11)
分类和比较
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
类型
(C++11)
(C++11)
(C++11)
宏常量
HUGE_VALFHUGE_VALHUGE_VALL
(C++11)(C++11)
(C++11)
(C++11)
分类
(C++11)(C++11)(C++11)(C++11)(C++11)


 
定义于头文件 <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