Вычисление факториала на языке C

Задача. Вводится натуральное число. Найти его факториал.

Факториал числа - это произведение всех натуральных чисел до него включительно. Например, факториал числа 5 равен произведению 1 * 2 * 3 * 4 * 5 = 120.

Используя цикл while, можно на каждой итерации уменьшать значение n (вначале содержит натуральное число, для которого ищется факториал). При этом до уменьшения умножать на него общее произведение. Другими словами, сначала мы умножаем на самый большой множитель, в конце на 2. Если бы мы шли от меньшего к большему множителю, то пришлось бы вводить дополнительную переменную.

#include <stdio.h>

int main() {
    unsigned char n;
    unsigned long factorial = 1;

    scanf("%hhu", &n);
    printf("%hhu! = ", n);

    while (n > 1)
        factorial *= n--;

     printf("%lu\n", factorial);
}

Вместо while можно использовать цикл for:

for (; n > 1; n--)
    factorial *= n;

Примеры выполнения:

5
5! = 120
6
6! = 720
8
8! = 40320

Обратите внимание, что факториал сильно возрастает даже при небольшом увеличении значения n. Поскольку тип данных имеет ограничения (максимально допустимое значение), факториал больших натуральных чисел будет вычисляться неправильно.