Странное поведение в Си при расчете суммы цифр с ведущими нулями

Я просто хотел написать минималистичную программу на C для вычисления суммы цифр некоторого натурального числа (сумма цифр определяется следующим образом: sumOfDigits (123) = 6, sumOfDigits (0) = 0, sumOfDigits (32013) = 9 , и так далее).

Пока что все в порядке со следующим фрагментом кода. Например, для 5100 это доставляет 6, правильно. Но почему 14 доставляется за 05100 (помните лидирующие 0)?

Какие'здесь происходит?

Я посмотрел на двоичное представление чисел, но это неНе дайте мне никакой информации. (Кстати: следующий код должен работать где угодно, я думаю.)

#include 

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;
}

РЕДАКТИРОВАТЬ: Как сказал Зайбис .... ведущий 0 означает восьмеричную запись. :-) и так: 5100_8 == 2624_10

Ответы на вопрос(1)

Ваш ответ на вопрос