Почему не печатается unsigned int?

Есть printf, есть спецификатор unsigned int - %u; Википедия говорит что диапазон unsigned int от 0 до 4294967295. Но почему когда я делаю так:

{
    printf("%u", 4294967295);
    return 0;
}

Компилятор gcc мне сообщает что я вывожу long int: " error: format ‘%u’ expects argument of type ‘unsigned int’, but argument 2 has type ‘long int’"?


Ответы (1 шт):

Автор решения: RomanDonw

Компилятор присваивает всем числам определённый тип, по приоритету знакового болшего, а не меньшего беззнакового. Думаю, стоит преобразовать это число в нужный тип явно. (В коде ошибки сказано, что функция ожидает число типа unsigned int, однако передано long int.)

→ Ссылка