<分区>
我正在尝试计算 int
的平方。我的代码如下所示:
long long sqr=0;
int num=77778;
sqr= num*num;
结果应该是6049417284
但是当我检查输出时,它显示 1754449988
。
我在做什么错误?
long long
应该能够存储结果,但为什么我得到了不同的值?
<分区>
我正在尝试计算 int
的平方。我的代码如下所示:
long long sqr=0;
int num=77778;
sqr= num*num;
结果应该是6049417284
但是当我检查输出时,它显示 1754449988
。
我在做什么错误?
long long
应该能够存储结果,但为什么我得到了不同的值?
最佳答案
在这种情况下,中间结果类型与第一个参数类型相同。所以这段代码将错误的值放入 sqr
(因为这里有整数溢出)。试试这个:
long long num = 77778;
long long sqr = num * num;
另一种转换方式:
int num = 77778;
long long sqr = (long long) num * num;
为了更好地理解它,您可以检查以下几行:
int ia = 1, ib = 2;
double da = 1.0, db = 2.0;
double ic = ia / ib; // c == 0.0, because intermediate result of division is 0
double dc = da / db; // c == 0.5, expected result
关于c++ - "Int"c++ 与 "long long"结果的乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37740898/