Вы должны использовать %lu
вместо %d
.Компилятор проверяет вашу строку формата на соответствие параметрам, которые вы передаете printf
, видит, что вы передаете неподписанное, но печатает его как целое число со знаком, и выдает предупреждение.Предупреждение указывает, что для чисел, больших или равных 2 ^ 31 printf
, будет выведено большое отрицательное число, когда тип данных подразумевает другую семантику, а именно большое положительное целое число.
EDITEDв ответ на комментарии Джоша Касвелла и thepepp