我需要计算一个长度大约为9-10位的大数字。 Msdn说long long类型的范围为:
-9,223,372,036,854,775,808至9,223,372,036,854,775,807
但是当我运行此代码时,我会打印出一个垃圾值:
#include <stdio.h>
int main(){
int seed = 88888; //This will be always a 5 digit number so the square of
// it will be 9 or 10 digits length
long long square = seed * seed;
printf("square = %lld", square);
getchar();
return 0;
}
输出: square = -688858048
答案 0 :(得分:5)
seed
的类型为int
。 seed*seed
也将是int
类型。并且88888*88888
溢出int
的大小。然后,将此垃圾值分配给long long
。
更改seed
的类型,或在您的计算中投射:
long long square = ((long long) seed) * seed;