int main (void)
{
int i;
for (i=1; i<=20; i++) {
int j;
unsigned long long fac = 1;
for ( j = 1; j<=i; ++j) {
fac *= j;
}
printf ("%2i! = %ld\n", i, fac);
}
return 0;
}
从14开始!到20!输出错误的值。
它给出的是负数还是数字不够大。.什么问题?
最佳答案
printf ("%2i! = %ld\n", i, fac);
问题在这里,对unsigned long long类型值使用正确的符号
尝试:
printf ("%2i! = %llu\n", i, fac);
关于c - C编程阶乘输出错误值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8630108/