Re: Откуда эта лютая любовь к знаковым целым?
От: vdimas Россия  
Дата: 08.06.20 05:03
Оценка: 1 (1) +1
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Даже в классической книге Кернигана/Ритчи множество примеров, где счетчики, индексы и прочие имеют знаковый тип.


Обе мейнстримовых модели целых, знаковые и беззнаковые, плохо подходят для счётчиков/индексов.
Тут должен быть тип с семантикой как у указателей — отдельный тип для значения, отдельный тип для разницы.
(собсно, указатели — это и есть индекс в участке памяти)

Значение индекса будет беззнаковым, разница знаковая.

Значения индексов можно сравнивать/вычитать, нельзя складывать.
К индексам можно прибавлять смещение и т.д. — всё как у указателей.

Соответственно, при итерировании от индекса до индекса будет логика как при итерировании по указателям.
При итерировании от одного указателя в какую-либо сторону на нужное смещение — цикл оперирует знаковым смещением до тех пор, пока смещение не будет равно 0-лю (или другому смещению).

С подобной проблематикой сталкивался при нумерации сообщений в сетевом протоколе.
Номера сообщений по стандарту беззнаковые, но разница их знаковая.
В итоге, или необходимо во внутренней логике обкладываться if-ами, или использовать числа удвоенной ширины в памяти/алгоритмах, или нарисовать свои обертки над целыми с соотв. операциями — самый правильный вариант, ИМХО.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.