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

时间:2015-01-29 16:56:42

标签: c++ long-integer

#include <iostream>
using namespace std;

int main() {

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

    return 0;
}

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

1 个答案:

答案 0 :(得分:8)

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

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

long long a=2501LL*2501*2501;

Demo.