Почему для строго положительных величин (такие как длина, вес, количество и т.д.) лучше использовать знаковые числа, а не безнаковые? Вроде на первый взгляд кажется, что безнаковый лучше: верхняя граница становится в два раза выше, да, и явно подчеркивается, что данная величина может быть только положительной.
одна из больших проблем с безнаковыми числами, что казалось бы безопасный код — начинает
вести себя непредсказуемо
например, обработать все элементы кроме
последнего
for (uint i = 0; i < array.Count-1; ++i)
{
//bla-bla
}
|
вот это код будет дохнуть, если
array.Count == 0 и тип Count — uint.
обработка элементов в обратном
порядке
for (uint i = array.Count-1; i>=0; --i)
{
//bla-bla
}
|
этот код имеет сразу две ошибки:
1.
цикл никогда не закончиться для любого размера
2. опять же, если array.Count
== 0, то получаем некорректное вычитание.