Re[14]: Откуда эта лютая любовь к знаковым целым?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 09.05.20 06:57
Оценка: 1 (1)
Здравствуйте, Евгений Музыченко, Вы писали:

N>>Почему для тебя беззнаковость номера дня важнее остальных факторов?


ЕМ>Каких "всех"? Здесь пока озвучивались только монотонность при переходе через нуль, спецзначения вроде -1, и экономия на преобразованиях.


Ну вот это оно и есть. Вполне достаточно, чтобы использовать равномерное расширение, где доступно.

EM> Циклы с декрементом до нуля включительно я использую крайне редко,

EM> для спецзначений использую UINT_MAX и соседние,

Ну а почему собственно такое загромождение кода и понятий (надо ещё постоянно помнить, что это за UINT_MAX) вместо -1, -2, ... ? Большинству тут отрицательные таки проще (хотя ещё лучше, конечно, когда они именованные константы).

EM> и добавить несколько преобразований, даже в виде static_cast вместо int (), меня не ломает.


Ну а многим не понравится загромождение текста.

N>>И это вполне возможно. Юлианский день, в плавучке — достаточно точный метод задания времени. Но тут начинаются проблемы округления, это уже неудобно. Вот unixtime в микросекундах со знаком — достаточно дёшево и защищено от подобных проблем.


ЕМ>Знак-то там зачем?


Для разностей.

EM> Я вот очень часто пользуюсь виндовой GetTickCount, и ни разу не приходилось преобразовывать результат к знаковому типу. Запомнил время при старте цикла или на последней итерации, на очередной итерации вычел его из нового значения, получил истекший интервал. "Заворот" при переполнении обрабатывается естественным образом, автоматически. Что я все эти годы делал не так?


Тики по GetTickCount специально рассчитаны на такой режим. Но у тебя это работает потому, что в C/C++ unsigned уже гарантированно сделано арифметикой по модулю.
В Ada это отдельный тип чисел: "type counter32 = modulo 2**32" и т.п. (модуль не обязан быть степенью двойки). Вот там, да, штатно такая арифметика (без защиты на заворот).

А знаковые разности времени важны, например, при сборе статистики по работе цикла событий (первое, что вспомнилось навскидку). Так бы пришлось знак выносить отдельно.
Или где-то у меня по аналогичным принципам регулируется запуск очереди заданий в зависимости от нагрузки, там тоже сплошные знаковые в формулах.
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.