c++ - c++中除法和模数的意外结果
问题描述
为什么 990099009900 / 10 在 C++ 中等于 -203843547?
#include <iostream>
using namespace std;
int main()
{
long int n = 990099009900;
cout << n / 10;
}
解决方案
如果你在这里运行它:
std::cout << "limit " << std::numeric_limits<long int>::max();
你可能会得到2147483647
,就像它在 Visual Studio 上发生的那样。请尝试long long
:
#include <iostream>
int main()
{
long long n = 990099009900;
std::cout << n / 10;
}
这保证至少是 64 位,而long int
不是(至少是 32 位)。32 位不足以容纳990099009900
.