Пытался вычислить факториал 65, получил правильный результат. Все, что больше 65, приводит к выводу 0. Шокирует, так как я использую unsigned long int. Что не так?
Код:
#include <stdio.h>
void factorial(int unsigned long);
int main()
{
int unsigned long num, result;
printf("\nEnter number to obtain factorial : ");
scanf("%ld", &num);
factorial(num);
}
void factorial (int unsigned long x)
{
register int unsigned long f = 1;
register int unsigned long i;
for (i=x;i>=1;i--)
f= f*i;
printf("\nFactorial of %lu = %lu\n",x,f);
}
int unsigned long
, опытный программист никогда не пишет так, используя вместо этогоunsigned long
илиunsigned long int
. - person Antti Haapala   schedule 04.07.2020f
может навести вас на мысль о переменной какfloat
. По мере того, как ваш код становится длиннее или сложнее, эти вещи становятся более важными. - person Myst   schedule 04.07.2020