gdb中的inf是什么

What is inf in gdb

我正在调试 C++ 程序。有一个双精度类型的变量 x,gdb 将其值打印为 inf。然而,下面的表达式 returns false 即使 x 的值没有改变

x == std::numeric_limits<double>::max()

当 gdb 说 inf 时,它是否表示此类型的最大可能值(双精度)?如果不是,那是什么意思?

表示x == std::numeric_limits<double>::infinity().

浮点实现不一定必须支持无穷大,但常见的实现 - IEEE754 - 支持。

从 C++11 开始,您可以使用 std::isinf(x) 来测试浮点数是否无穷大。

不,无穷大不是最大值;从这个意义上说,它根本不是 "value"。

与 NaN 一样,无穷大是 IEEE754 浮点数可以采用的 "special value"。他们两个表现出不寻常的属性(例如 NaN != NaN)并且不位于您选择的浮点类型的数字范围内的数字线上。

虽然 1.79769e+308(std::numeric_limits<double>::max() 在我的系统上)是一个非常大的数字,但它距离无穷大还有 long 的距离。在这种类型中,介于两者之间的每个潜在值(实际上有无穷大)都是不可表示的。如果 "min" 和 "max" 函数仅返回 -infinf.[=14=,那么对于 double 的数值域将没有用]