我有一个 int a
需要等于“无穷大”。这意味着如果
int b = anyValue;
a>b
总是正确的。
C++ 是否有任何特性可以使这成为可能?
原文由 Daniel Gratzer 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个 int a
需要等于“无穷大”。这意味着如果
int b = anyValue;
a>b
总是正确的。
C++ 是否有任何特性可以使这成为可能?
原文由 Daniel Gratzer 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是未来给我的信息:
只需使用: (unsigned)!((int)0)
它通过将所有位分配给 1(一)来创建任何机器中可能的最大数字,然后将其转换为无符号数
甚至更好
#define INF (unsigned)!((int)0)
然后在你的代码中使用 INF
原文由 Wilmer E. Henao 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答3.3k 阅读
整数是有限的,所以很遗憾你不能将它设置为真正的无穷大。但是,您可以将其设置为 int 的最大值,这意味着它将大于或等于任何其他 int,即:
总是正确的。
你会这样做
这通常等于 2,147,483,647
如果您真的需要一个真正的“无限”值,则必须使用双精度或浮点数。然后你可以简单地做到这一点
数字限制的其他解释可以在 这里 找到
快乐编码!
注意:正如 WTP 所提到的,如果绝对有必要拥有一个“无限”的 int,那么您将不得不为 int 编写一个包装类并重载比较运算符,尽管对于大多数项目来说这可能不是必需的。