为什么 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;
#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;