HUGE_VALF, HUGE_VAL, HUGE_VALL

来自cppreference.com
< 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)
宏常量
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 /* 由实现定义 */
(C++11 起)
#define HUGE_VAL  /* 由实现定义 */
#define HUGE_VALL /* 由实现定义 */
(C++11 起)

HUGE_VALFHUGE_VALHUGE_VALL 宏展开成正浮点常量表达式,它们比较等于浮点函数和运算符在上溢时返回的值(见 math_errhandling)。

常量 解释
HUGE_VALF 展开成指示上溢的正 float 表达式
HUGE_VAL 展开成指示上溢的正 double 表达式,不必可表示为 float
HUGE_VALL 展开成指示上溢的正 long double 表达式,不必可表示为 floatdouble

在支持浮点无穷大的平台上,这些宏始终分别展开成 floatdoublelong double 的正无穷大。

注解

在不支持浮点无穷大的平台上,这些宏会展开成对应类型的最大有限数字。

C++98 添加了数学函数的 floatdouble 重载。这样就存在一个问题:float 重载不能返回 HUGE_VAL 来表示上溢,因为该宏不一定能表示为 float

LWG 问题 357 试图解决该问题。LWG 发现 C99 也有同样的问题(C99 也添加了 floatdouble 重载),并且 C99 通过添加宏 HUGE_VALFHUGE_VALL 来解决这个问题。因此 LWG 357 被关闭,并且 C++11 采用了 C99 的解决方案。

参阅

(C++11)
求值为正无穷大或保证使 float 上溢的值
(宏常量)