Есть код:
Если дописать до варианта
Это просто занятный трюк с небольшой оптимизацией. Может быть полезен.
int var = ...;Понадобилось отследить событие когда var становится больше 1.
if(var > 1) { ... }Потом понадобилось отследить событие когда var может принять и отрицательное значение.
if((unsigned)var > 1) { ... }Это работает поскольку знаковые отрицательные целые в беззнаковой трактовке имеет очень большую величину.
Если дописать до варианта
if((unsigned)var > n) { ... }то получаем код эквивалентный (конечно, если
n < MAX_INT)довольно сложному условию
if( ( var < 0 ) || ( var > n )) { ... }В ассемблерном виде это довольно сложная конструкция, в то время как
if((unsigned)var > n)намного проще.
Это просто занятный трюк с небольшой оптимизацией. Может быть полезен.
Комментариев нет:
Отправить комментарий