C++ 中可能的最大整数

max possible int in c++

本文关键字:整数 C++      更新时间:2023-10-16

我认为无符号int的最大可能值是65535(C++),但我创建了一个程序,它可以使用等于100000的int。使用值高达 10000000 的 int 是否安全,否则程序可能会崩溃?在这种情况下,长是唯一的解决方案吗?

谢谢你的时间!

使用std::numeric_limits<unsigned int>::max()来确定这个值是什么。

请检查下面的代码以了解限制:

#include <iostream>     // std::cout
#include <limits>       // std::numeric_limits
int main () {
  std::cout << "Minimum value for int: " << std::numeric_limits<int>::min() << 'n';
  std::cout << "Maximum value for int: " << std::numeric_limits<int>::max() << 'n';
  std::cout << "int is signed: " << std::numeric_limits<int>::is_signed << 'n';
  std::cout << "Non-sign bits in int: " << std::numeric_limits<int>::digits << 'n';
  std::cout << "int has infinity: " << std::numeric_limits<int>::has_infinity << 'n';
  return 0;
}

INT_MAX是实现定义的。这意味着由编译器供应商决定,只要它不小于 32767,并且大于或等于短。 您可以使用climits定义来发现实现的限制:

#include <iostream>
#include <climits>
int main () {
  std::cout << INT_MAX << std::endl;
  return 0;
}

在我安装的 gcc/g++ v4.8.1 目标 x86_64-linux-gnu 时,此代码片段产生:

2147483647

正如在对这个答案的后续回复中提到的,你可以(并且可能应该)使用语义上更合适的(对于C++)方法:

#include <iostream>
#include <limits>
int main () {
  std::cout << std::numeric_limits<int>::max() << std::endl;
  return 0;
}

。应该产生相同的输出。