Наблюдение Бьярна Страуструпа о том, что «использование unsigned вместо int для получения еще одного бита для представления положительных целых чисел почти никогда не является хорошей идеей» вызвало обеспокоенность по поводу решения сделать size_t беззнаковым.
Первоначально size_t был сделан беззнаковым, чтобы приспособиться к архитектурам с 16-битными указателями, таким как системы DOS. Чтобы предотвратить ограничения размера строки, стандарт C требует, чтобы ptrdiff_t, знаковый аналог size_t, был фактически 17-битным.
Хотя эти исторические причины все еще могут быть применимы во встроенных системах, они менее важны для современного 32-битного и 64-битного программирования. В этих средах использование беззнаковых типов для чисел не имеет практических преимуществ, и их использование может привести к потенциальным ошибкам из-за правил неявного преобразования C/C (например, где string("Hi").length()
Решение сделать size_t беззнаковым не было ошибкой, а скорее практическим выбором для ограниченных систем того времени. Однако в современной практике программирования обычно рекомендуется свести к минимуму использование целых чисел без знака в интерфейсах и для чисел, за исключением особых обстоятельств, когда самоописательный характер typedef int MyType полезен.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3