我的代码有问题。
我必须进行计算,但是当特定数字变大时,它不能显示正确的答案,我现在使用的是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/