【发布时间】:2019-06-21 06:46:15
【问题描述】:
为什么我们在乘法中明确需要将int 类型转换为long long?
t=(long long)n*(long long)n 给出正确答案,但是
t=n*n 给出错误答案:
#include <iostream>
using namespace std;
int main() {
int n=100000;
long long int t;
t=(long long)n*(long long)n;
//t=n*n (This gives wrong answer)
printf("%lld",t);
return 0;
}
t=(long long)n*(long long)n 给10000000000
然而
t=n*n 给1410065408
为什么会这样?
【问题讨论】:
-
n是一个int,所以n*n也是一个int,而10000000000在大多数机器上不适合int。如果您将int n = 100000;更改为long long n = 100000;,那么这也可以解决问题。