在C ++中设置int为无穷大

我有一个int a ,它需要等于“infinity”。 这意味着如果

 int b = anyValue; 

a>b总是如此。

有没有C ++的任何function,可以使这成为可能?

整数本质上是有限的。 你可以得到最接近的是通过设置a int的最大值:

 #include <limits> // ... int a = std::numeric_limits<int>::max(); 

如果在您的实现中int为32位宽,那么这将是2^31 - 1 (或2 147 483 647 )。

如果你真的需要无穷大,可以使用浮点数types,比如floatdouble 。 你可以通过以下方式获得无穷大:

 double a = std::numeric_limits<double>::infinity(); 

整数是有限的,所以可悲的是你不能把它设置为一个真正的无穷大。 然而,你可以将它设置为int的最大值,这意味着它将大于或等于任何其他int,即:

 a>=b 

总是如此。

你会这样做

 #include <limits> //your code here int a = std::numeric_limits<int>::max(); //go off and lead a happy and productive life 

这通常等于2,147,483,647

如果你真的需要一个真正的“无限”的价值,你将不得不使用双或浮动。 那么你可以简单地做到这一点

 float a = std::numeric_limits<float>::infinity(); 

数字限制的其他解释可以在这里find

快乐编码!

注意:正如WTP提到的那样,如果绝对必须有一个“无限”的int,那么必须为int编写一个包装类,并重载比较运算符,尽pipe这对于大多数项目来说可能不是必需的。

int本质上是有限的; 没有任何价值可以满足你的要求。

如果你愿意改变b的types,你可以用操作符覆盖来做到这一点:

 class infinitytype {}; template<typename T> bool operator>(const T &, const infinitytype &) { return false; } template<typename T> bool operator<(const T &, const infinitytype &) { return true; } bool operator<(const infinitytype &, const infinitytype &) { return false; } bool operator>(const infinitytype &, const infinitytype &) { return false; } // add operator==, operator!=, operator>=, operator<=... int main() { std::cout << ( INT_MAX < infinitytype() ); // true } 

你也可以使用INT_MAX:

http://www.cplusplus.com/reference/climits/

这相当于使用numeric_limits。

int最小值和最大值

国际-2,147,483,648 / 2,147,483,647国际64 -9,223,372,036,854,775,808 / 9,223,372,036,854,775,807

我想你可以设置一个等于9,223,372,036,854,775,807,但它将需要一个int64

如果你总是想要一个更大的B为什么你需要检查它? 总是把它设置为真