我的代码有问题。
我必须进行计算,但是当特定数字变大时,它不能显示正确的答案,我现在使用的是int类型。但我不知道这是否是最佳选择。

这是我的代码:

int faculty(int faculty1)
{

    printf("enter faculty\n");
    scanf("%i", &faculty1); //faculty1 is a number from 1 to 20
    int i;
    int fact = 1;

    for(i=1; i<=faculty1; i++)
    {
         fact *= i;
    }

    return (fact);
}


我可以使用哪种类型来避免教师计算中的溢出?

最佳答案

您可能希望使用unsigned long long来存储19位数字的值。

最大值为18446744073709551615(2 ^ 64-1)或更高*

还要注意,格式说明符是%llu



scanf("%i", &faculty1);


应该

scanf("%d", &faculty1);


如果faculty1是包含19位数字的那个,则

scanf("%llu", &faculty1);

关于c - 什么类型的整数用来表示19位数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29707572/

10-10 20:55