为什么c ++中的long long不能容纳2500 ^ 3

Chi*_*hah 2 c++ long-integer

#include <iostream>
using namespace std;

int main() {

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

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我也尝试了unsigned long long,并一直给出一些胡言乱语的答案.我检查了long long的容量,它可以保持这个值.

das*_*ght 8

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

LL后缀添加到其中一个数字以解决问题:

long long a=2501LL*2501*2501;
Run Code Online (Sandbox Code Playgroud)

演示.