Это частично о том, как вы печатаете значение.
Если вы скажете
printf("%d\n", your_unsigned_int);
тогда даже если int не подписано ((если у вас нет компилятора, который предупреждает о таких вещах), printf
будет обрабатывать его как со знаком int (потому что это то, что %d
означает).
Попробуйте %u
вместо %d
.
Как только вы исправите это, поймите, что в 32-битной системе int
(со знаком или без) обычно будет иметь размер только 32 бита и, таким образом, будет содержать значения примерно до 4 миллиардов. Если вы хотите, чтобы значения были больше этого, вам понадобится больший тип (например, long long
). Если вы сделаете это, вам нужно будет изменить строку формата на что-то вроде "%ull\n"
(или "%llu"
? Я забыл), а также ... или кто знает, что вы получите.