首页 > 解决方案 > c++中除法和模数的意外结果

问题描述

为什么 990099009900 / 10 在 C++ 中等于 -203843547?

#include <iostream>
using namespace std;
int main()
{
    long int n = 990099009900;
    cout << n / 10;
}

标签: c++operators

解决方案


如果你在这里运行它:

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.


推荐阅读