我应该更喜欢 HUGE_VAL 还是 INFINITY?

Sva*_*zen 5 c++ infinity

我一直想知道HUGE_VAL宏常量和宏常量之间的确切区别INFINITY,这也在这个问题中进行了讨论。看起来两者在功能上是等效的。

除了在逻辑上区分有限但巨大的价值和真正无限的价值之外,还有什么理由更喜欢一个?

特别是,我现在遇到的用例是关于需要找到最大值的算法类型,并且在开始时他们将当前找到的最大值初始化为-INFINITY-HUGE_VAL可能更可取吗?如果您对其他使用情况有任何建议,请仍然告诉他们。

rem*_*s4e 5

对于 C++,您应该使用std::numeric_limits<T>头文件中定义的类而不是这些宏。这是一个例子:

double val = std::numeric_limits<double>::max();
Run Code Online (Sandbox Code Playgroud)

这些类专门用于您的实现支持的每种数字类型,即 char、int、long、float、double 等。

这些给出的最大值对于查找最大值特别有用,因为它们实际上是查询类型可以表示的较大值。