Аргументом против использования unsigned
является то, что вы можете оказаться в очень разумных ситуациях, когда возникают неловкие ситуации и появляются непреднамеренные ошибки. Рассмотрим класс - например, класс списка или что-то подобное - с помощью следующего метода:
unsigned int length() { ... }
Кажется очень разумным. Но затем, когда вы захотите перебрать его, вы получите следующее:
for (unsigned int i = my_class.length(); i >= 0; --i) { ... }
Ваш цикл не прерывается, и теперь вы вынуждены разыграть или сделать какую-то другую неловкость.
Альтернативой использованию unsigned
является просто assert
, чтобы ваши значения были неотрицательными.
Ссылка .