为什么 C++ 中的 long long 不支持 2500^3

Why does long long in c++ does not hold 2500^3

#include <iostream>
using namespace std;

int main() {

    long long a=2501*2501*2501;
    cout<<a;

    return 0;
}

我也试过 unsigned long long,但它总是给出一些乱码的答案。 我查看了long long的容量,可以容纳这个值

long long绝对可以保住这个值。问题是您用来计算它的表达式,即 2501*2501*2501,是一个 int 表达式。编译器使用整数计算结果。这会导致溢出,因为结果不适合 32 位。因此,在编译器知道该值进入 long long 变量之前,结果变得无效。

为其中一个号码添加 LL 后缀以解决问题:

long long a=2501LL*2501*2501;

Demo.