Salve, ho da poco iniziato l'università e mi sto cimentando nella programmazione in C anche a casa per allenamento. Stavo programmando un algoritmo che dato un numero n restituisse il suo n! (n fattoriale). Ho notato che però funziona fino ad un certo numero n, infatti dopo 12!, dal 13! in poi restituisce dei valori completamente casuali, e dal 16! in poi numeri negativi. Per la mia poca esperienza direi che è dovuto al fatto che non ha abbastanza memoria per gestire calcoli più elevati, quindi overflow. Voi più esperti che dite?
Vi lascio qua sotto l'algoritmo:
#include "stdio.h"
int main()
{
int n, i, Prodotto;
printf("Inserire un numero!\n");
scanf("%d", &n);
Prodotto = 1;
i = n;
while (n > 0)
{
Prodotto = Prodotto * n;
n--;
}
printf("%d!=%d", i, Prodotto);
return 0;
}