Comportamiento extraño en C al calcular la suma de dígitos con ceros iniciales

Solo quería escribir un programa minimalista en C para calcular la suma de dígitos de algún número natural (la suma de dígitos se define de la siguiente manera: sumOfDigits (123) = 6, sumOfDigits (0) = 0, sumOfDigits (32013) = 9 , y así).

Hasta ahora, todo está bien con el siguiente fragmento de código. Por ejemplo, para 5100 entrega 6, correctamente. Pero, ¿por qué se entregan 14 para 05100 (recuerde el 0 principal)?

¿Que está pasando aqui?

Eché un vistazo a la representación binaria de los números, pero eso no me dio ninguna información. (Por cierto: el siguiente código debería funcionar en cualquier lugar, supongo).

#include <stdio.h>

unsigned int sumOfDigits(unsigned int n) {
    int retval = 0;
    while (n > 0) {
        retval += n % 10;
        n/=10;
    }
    return retval;
}

int main() {
    printf("OK: %u\n", sumOfDigits(5100u));
    printf("WTF: %u",  sumOfDigits(05100u));
    return 0;
}

EDITAR:&nbsp;Como Zaibis declaró ... un 0 inicial significa notación octal. :-) y así: 5100_8 == 2624_10