Я следующий код, который должен вычислить факториал заданного числа:неподписанных долгое INT сделать переменную равной 0
#include <stdio.h>
int main()
{
unsigned short int n, i;
unsigned long int fact=1;
printf("Give n:");
scanf("%u", &n);
printf("\nfact=%u", fact);
for(i = 1; i <= n; i++)
fact = fact * i;
printf("\n%u!=%u", n, fact);
return 0;
}
Я попытался проверить, что является проблемой, и обнаружил, что переменная в том, 0 . Может кто-нибудь объяснить мне, почему переменный факт равен 0, так как я инициализировал его 1? Если это имеет значение, я использую компилятор GNU GCC в Codeblocks.
Почему вы используете 'неподписанные short' так или иначе? И вам, вероятно, будет лучше использовать 'unsigned long long fact'. –
'% lu' для длинных неподписанных и'% hu' для коротких неподписанных – billpcs
Я изменил '% u' в'% hu' и, как ни удивительно, для меня программа работает. Теперь переменной 'fact' является' 1'. Теперь я более смущен. Это изменение, которое я сделал для переменной 'n', но также влияет на переменную' fact'. Как это возможно? –