Си++, да и Си достаточно новой версии развращают тем, что можно локальные переменные об'являть в любом месте, а не только в начале блока (или в начале функции, как в Паскале).
Обычно считается хорошим стилем -- об'являть переменную непосредственно перед использованием. Но это приводит к неожиданным факапам.
int main()Долго думал, почему автомат всё время в нулевом состоянии и в первое не переходит? А вот. Пришлось переносить state в начало main().
{
//инициализация контроллера
for(;; )//главный цикл
{
//пять страниц кода
int state=0;//состояние автомата
//пусть автомат будет простой
//входных сигналов нет
//на каждом шагу переходит в соседнее
//из двух состояний
if(state==0)
{
state=1;
//действия
}
else
{
state=0;
//действия
}
}
}