垃圾值长数据类型

时间:2016-03-28 21:42:56

标签: c

我需要计算一个长度大约为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

1 个答案:

答案 0 :(得分:5)

seed的类型为intseed*seed也将是int类型。并且88888*88888溢出int的大小。然后,将此垃圾值分配给long long

更改seed的类型,或在您的计算中投射:

long long square = ((long long) seed) * seed;