为什么 cin
会失败,当我输入如下数字时:3999999999 但它适用于较小的数字,例如:5?
#include <iostream>
int main()
{
int n;
std::cin >> n;
if (std::cin.fail())
std::cout << "Something sucks!";
else
std::cout << n;
return 0;
}
最佳答案
尝试:
std::cout << std::numeric_limits<int>::max() << std::endl; // requires you to #include <limits>
int
在您的系统上可能是一个 32 位有符号二进制补码,这意味着它可以表示的最大值是 2,147,483,647。您的数字 3,999,999,999 大于该数字,无法用 int
正确表示。 cin
失败,提醒您这个问题。
long
在您的系统上可能是一个 64 位整数,如果是,请尝试一下。您需要一个 64 位整数来表示 3,999,999,999。或者,您可以使用 unsigned int
,它将能够表示大至 4,294,967,295 的数字(同样,在典型系统上)。当然,这意味着您不能表示负数,所以这是一种权衡。
关于c++ - cin >> 对较大的数字失败但对较小的数字有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13474989/