在 C 中将 int 设置为 Infinity

新手上路,请多包涵

我有一个 int a 需要等于“无穷大”。这意味着如果

int b = anyValue;

a>b 总是正确的。

C++ 是否有任何特性可以使这成为可能?

原文由 Daniel Gratzer 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

整数是有限的,所以很遗憾你不能将它设置为真正的无穷大。但是,您可以将其设置为 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();

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

快乐编码!

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

原文由 Daniel Gratzer 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是未来给我的信息:

只需使用: (unsigned)!((int)0)

它通过将所有位分配给 1(一)来创建任何机器中可能的最大数字,然后将其转换为无符号数

甚至更好

#define INF (unsigned)!((int)0)

然后在你的代码中使用 INF

原文由 Wilmer E. Henao 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏