Есть код:
Если дописать до варианта
Это просто занятный трюк с небольшой оптимизацией. Может быть полезен.
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)намного проще.
Это просто занятный трюк с небольшой оптимизацией. Может быть полезен.
Комментариев нет:
Отправить комментарий