Re[5]: Проверка выполнения сложения
От: rg45 СССР  
Дата: 12.04.12 08:23
Оценка:
Здравствуйте, netch80, Вы писали:

N>Также у тебя проверка на (y>0) избыточна для беззнаковых; если заменить на >= в обеих сторонах, то левая для беззнаковых вырождается в true и экономится операция сравнения...


В-о-от! Я это чуть позже тоже сообразил, но уже не стал заморачиваться исправлением. Действительно, если a + b = c, где a, b, c — беззнаковые, то выражение: b >= 0 == c >= a оптимизатор с радостью упростит до c >= a

N>Интересно, почему MS в своём SafeInt не использует такие простые приёмы. Вместо этого, например, для двух 32-разрядных чисел они складывают используя 64 бита (причём это даже при компиляции в 32-битный код) и проверяют результат на выход за границы. И вообще у них пример того, как не надо писать на C++...


Да набирают туда непонятно кого
--
Справедливость выше закона. А человечность выше справедливости.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.