Часто известны значения положительных значений. Например, порядковый номер TCP/UDP всегда имеет положительное значение. Оба int
и unsigned int
достаточно велики, чтобы хранить даже самые большие sequence number
, поэтому я могу использовать любой из этих типов. Есть много других примеров, когда значения известны как положительные.Должен ли я использовать «unsigned» каждый раз, когда знаю, что обрабатываю значения без знака?
Есть ли причины использовать unsigned
тип, если достаточного количества обычного signed
типа достаточно (и часто более чем достаточно)?
Лично я предпочитаю использовать обычные типы, потому что:
int
, вероятно, немного более читаемым, чемuint
илиunsigned int
- мне не нужно включать дополнительные заголовки для
UINT
и т.д. - Я буду избегать дополнительных бросков где-то еще в программе
Причины использования unsigned
Тип, который я могу себе представить:
- help компилятор сгенерированный более качественный код?
- помощь другой программист, чтобы понять, что переменная не имеет знака
- избежать возможных ошибок (например, когда INT присваивается UINT компилятор, вероятно, будет генерировать ошибку во время компиляции, и мы должны проверить, что значение мы задаём не является отрицательным)
Некоторые мысли об этом здесь: http://embeddedgurus.com/stack-overflow/2009/08/a-tutorial-on- signed-and-unsigned-integers/ – Morwenn
спасибо, также я нашел этот вопрос только сейчас http://stackoverflow.com/questions/12225521/should-unsigned-ints-be-used-if-not-necessary?rq= 1 – javapowered
Нет. Есть несколько аргументов против использования 'unsigned' - Stroustrup ссылается на это при передаче в языке программирования C++ где-то - Лакос ушел и написал главу об этом в одной из своих книг: утомительный. Примеры проблем: если у вас есть значения a и b, 'abs (a - b)' имеет тенденцию работать интуитивно для int, но не без знака; и стоит обратить внимание на то, что стандартные конверсии могут звучать бесшумно, поэтому те проверки, которые вы можете надеяться получить от использования unsigned, в любом случае не работают - отрицательные значения становятся бесшумными и наоборот. –