Укажу, что в C # вы можете включить /checked
для проверки арифметического переполнения / переполнения, что в любом случае неплохая идея. Если производительность важна в критическом разделе, вы все равно можете использовать unchecked
, чтобы избежать этого.
Для внутреннего кода (т. Е. Кода, на который не будут ссылаться никакие помехи взаимодействия с другими языками), я голосую за использование unsigned, когда этого требует ситуация, например, переменных length
, как упоминалось ранее. Это - наряду с проверенной арифметикой - предоставляет еще одну сеть для разработчиков, улавливая незначительные ошибки ранее.
Еще один момент в дискуссии со знаком против неподписанного состоит в том, что некоторые программисты используют такие значения, как -1, для обозначения ошибок, если они не имели бы другого значения. Я согласен с мнением о том, что каждая переменная должна иметь только одну цель, но если вы - или коллеги, с которыми вы кодируете - хотели бы указывать на ошибки таким образом, оставляя подписанные переменные, вы можете гибко добавлять состояния ошибок позже.