我一直想知道HUGE_VAL
宏常量和INFINITY
宏常量之间的确切差异,这也在this question中讨论过。看起来这两者在功能上是等价的。
除了从逻辑上区分有限但巨大的价值和真正无限的价值之外,是否有理由更喜欢一个而不是另一个?
特别是,我现在使用的用例是关于需要找到最大值的算法类型,并且在开始时它们将当前找到的最大值初始化为-INFINITY
。 -HUGE_VAL
可能更好吗?如果您对其他使用情况有任何建议,请告诉他们。
答案 0 :(得分:3)
使用C ++,您应该使用标头中定义的std::numeric_limits<T>
类而不是这些宏。
这是一个例子:
double val = std::numeric_limits<double>::max();
这些类专门用于实现支持的每种数字类型,即char,int,long,float,double等。
这些值给出的最大值对于查找最大值特别有用,因为它们实际上是查询类型可以表示的更大值。