Что неправильно в следующем примере?
unsigned char i;
for ( i = 7; i >= 0; i -- ) // будет крутится всегда !
{
…
}
Ответ:
[Вернуться в категорию "Вопросы и ответы по программированию на C для микроконтроллеров PIC."] Ааа! Это очень коварная ошибка. Когда i будет равно нулю, цикл уменьшит i на единицу и будет проверять условие выхода из цикла. Но, конечно, i является безззнаковым целым и после нуля его следующее значение будет равно 255, то есть всегда положительным. Этот цикл будет крутиться до следующей голубой луны! Надо изменить объявление на следующее:
signed char i; for ( i = 7; i >= 0; i -- ) // это работает ! { … }
Предупреждение: цикл, который считается от нуля в сторону увеличения, будет работать всегда при любом типе i. [Вопросы и ответы по программированию на C для микроконтроллеров PIC.]
|