Re: Откуда эта лютая любовь к знаковым целым?
От: kov_serg Россия  
Дата: 05.05.20 08:15
Оценка: +6
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Даже во многих современных программах на C++ часто вижу int/short/long там, где по смыслу должно быть беззнаковое целое. А в ранних программах знаковые целые вообще использовались везде, где было технически возможно. Даже в классической книге Кернигана/Ритчи множество примеров, где счетчики, индексы и прочие имеют знаковый тип. В виндовых SDK, где знаковость в основном используется адекватно, все равно регулярно встречаются знаковые параметры размеров, количеств и прочего, где не используются отрицательные значения для особых случаев.


ЕМ>Откуда такое пристрастие, кроме как от лени? Вроде как сколько-нибудь массовых процессоров, где беззнаковые целые поддерживались бы ограниченно, не существует. Есть в этом хоть какое-то рациональное зерно?


Откуда эта лютая любовь к без знаковым целым? От жадности? Зачем использовать без знаковое целое где можно использовть обычный int или very long long. Только ради экономии 1-го бита? В большнистве случаев целые числа используются с запасом по разрядной сетке иногда с эпичемким запасом. В редких случаях бывает удобно использовать беззнаковые числа, например при сравнении знаковых (unsigned)(x-x0) < (unsigned)width вместо двух сравнений достаточно 1-го и при битовых сдвигах. В остальных случаях знаковых более чем достаточно. Более того минимальное отрицательное число можно использовать как признак отсутствия значения. if (x && x==-x) return novalue();

ps: меня больше огорчает всеобщее пристрастие к условию выхода из цикла for(size_t i=0;i!=end;++i){} где исключается одна точка, вместо for(size_t i=0;i<end;++i){} где запрещаются все недопустимые значения.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.