История изменений
Исправление eao197, (текущая версия) :
Ну и что, в unsigned нельзя передать отрицательное число?
А еще C++ спокойно позволяет сравнивать signed с unsigned, и даже int с float. Давайте не мешать все проблемы в одну кучу.
Когда я вижу код, в котором для размерностей/индексов используется знаковый тип, то я вынужден выискивать в коде какие-то хитрости (вроде той, что Antonl выше указал, когда отрицательный индекс/размерность упрощают ситуацию). И если таких хитростей не обнаруживаю, то начинаю считать, что код гораздо сложнее, чем мне кажется и требует еще большего внимания.
А потом оказывается, что автор тупо привык писать int a = strlen(b)
. И все.
Даже Страуструп сетовал, что мол как жаль, что крестовая СТД вся на беззнаковых типах основана (индексы), это было ошибкой.
А еще Страуструп не стал делать автоматический вывод типов в первых версиях C++ из-за того, что ключевое слово auto в тот момент было занято для обозначения типа памяти (в дополнение к register и static).
И что?
Все ошибаются, в том числе и Страуструп.
Исходная версия eao197, :
Ну и что, в unsigned нельзя передать отрицательное число?
А еще C++ спокойно позволяет сравнивать signed с unsigned, и даже int с float. Давайте не мешать все проблемы в одну кучу.
Когда я виду код, в котором для размерностей/индексов используется знаковый тип, то я вынужден выискивать в коде какие-то хитрости (вроде той, что Antonl выше указал, когда отрицательный индекс/размерность упрощают ситуацию). И если таких хитростей не обнаруживаю, то начинаю считать, что код гораздо сложнее, чем мне кажется и требует еще большего внимания.
А потом оказывается, что автор тупо привык писать int a = strlen(b)
. И все.
Даже Страуструп сетовал, что мол как жаль, что крестовая СТД вся на беззнаковых типах основана (индексы), это было ошибкой.
А еще Страуструп не стал делать автоматический вывод типов в первых версиях C++ из-за того, что ключевое слово auto в тот момент было занято для обозначения типа памяти (в дополнение к register и static).
И что?
Все ошибаются, в том числе и Страуструп.