25 авг. 2011 г.

Ловушка в C++

Вот, наткнулся на такую ловушку:

for (int i = array.getSize()-1; i >= 0; --i)
{
//do something
}


Такая конструкция в отличие от

for (int i = 0; i < array.getSize()-1; ++i)


позволяет не "дергать" постоянно массив на предмет его размера. Оптимизатор возможно запомнит это значение при первом обращении, но не факт.
Однако ежели вместо int i = 0; по неосмотрительности возникнет uint i = 0;, то цикл превратится в вечный. i никогда не станет меньше 0.

Комментариев нет:

Отправить комментарий