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!输出错误的值。
它要么给出一个负数,要么数字不够大......问题是什么?
答案 0 :(得分:8)
printf ("%2i! = %ld\n", i, fac);
问题出在这里,对unsigned long long type value使用正确的表示法
尝试:
printf ("%2i! = %llu\n", i, fac);
答案 1 :(得分:2)
变量fac
的类型为unsigned long long
。此类型的正确格式说明符是%llu
:
printf ("%2i! = %llu\n", i, fac);
答案 2 :(得分:2)
您正在计算但打印错误!使用%llu:
printf ("%2i! = %llu\n", i, fac);
20! = 2432902008176640000
有!