Как понять запись

sega66
Offline
Зарегистрирован: 09.11.2011

Как понимать следующую строчку:

lightchase=lightchase+1-4*(lightchase>3);  

 

step962
Offline
Зарегистрирован: 23.05.2011

Наверное - как оператор языка C.

sega66
Offline
Зарегистрирован: 09.11.2011

Непонятно это значение:

4*(lightchase>3) 

step962
Offline
Зарегистрирован: 23.05.2011

неявное преобразование типов:

logical в integer (<=3 - "0", >3 - "1" вроде бы, но лучше проверить тестовым прогоном с выводом на терминал)

если эта "строка" стоит в цикле, то есть подозрение, что переменная будет пробегать значения 1-2-3-4-1-2-3-4...

sega66
Offline
Зарегистрирован: 09.11.2011

Огромное спасибо.

Вот полная строка:

if (millis()-time>199) // Check if 200mS has elapsed--Проверка, 200mS прошло?
{
time=millis();
  lightchase=lightchase+1-4*(lightchase>3); // counts from 1-4 repeatedly to chase LEDs
}

 

whoim
Offline
Зарегистрирован: 03.11.2011

 (lightchase+1) - (4*(на один если lightchase больше трех))

где один - эквивалент "правда"

whoim
Offline
Зарегистрирован: 03.11.2011

 то есть в любом случае счетчик увеличивается на один и если lightchase больше трех - отнимается 4