При программировании на C-подобном языке должен существовать один целочисленный тип по умолчанию: int или uint/unsigned int? По умолчанию я имею в виду, когда вам не нужны отрицательные числа, но один из них должен быть достаточно большим для данных, которые вы держите. Я могу придумать хорошие аргументы для обоих:
подписано: лучше математически, менее вероятно, странное поведение, если вы попытаетесь опуститься ниже нуля в каком-то граничном случае, о котором вы не думали, вообще избегает нечетных угловых случаев.
unsigned: Предоставляет немного дополнительной гарантии против переполнения, на случай, если ваши предположения о значениях неверны. Служит в качестве документации, что значение, представленное переменной, должно быть никогда отрицательным.