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" 函数仅返回 -inf
和 inf
.[=14=,那么对于 double
的数值域将没有用]
我正在调试 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" 函数仅返回 -inf
和 inf
.[=14=,那么对于 double
的数值域将没有用]