На сколько корректно будет работать данный код?

 

for (i=0;i<=5;i++)
  {
  ...
  if (flag==FALSE)
    {
    flag=TRUE;
    i=0; //цикл начинается с начала
    }
  }
Цель этой конструкции, чтобы при возникновении какой-то ошибки, цикл начинался заново. Значение flag контролируется в "...".

Она будет так работать?


 
Дарагой, зачэм спрашиваешь да? Правэрыт ната. Ивану ната, Иван правиряит
 
kermit:

for (i=0;i<=5;i++)
  {
  ...
  if (flag==FALSE)
    {
    flag=TRUE;
    i=0; //цикл начинается с начала
    }
  }
Цель этой конструкции, чтобы при возникновении какой-то ошибки, цикл начинался заново. Значение flag контролируется в "...".

Она будет так работать?


Не проверял, но думаю, что будет следующее.
При первом проходе происходит присвоение i нуля. При следующем сначала идет увеличение i на единицу, а затем проверка условия. Теперь вы "портите" значение индекса внутри цикла. При возврате внутри цикла сперва будет увеличение i на 1, т.е. i пойдет со значением 1.

Как говорил Мимино: "Я так думаю! "

 
Parabellum:
kermit:

for (i=0;i<=5;i++)
  {
  ...
  if (flag==FALSE)
    {
    flag=TRUE;
    i=0; //цикл начинается с начала
    }
  }
Цель этой конструкции, чтобы при возникновении какой-то ошибки, цикл начинался заново. Значение flag контролируется в "...".

Она будет так работать?


Не проверял, но думаю, что будет следующее.
При первом проходе происходит присвоение i нуля. При следующем сначала идет увеличение i на единицу, а затем проверка условия. Теперь вы "портите" значение индекса внутри цикла. При возврате внутри цикла сперва будет увеличение i на 1, т.е. i пойдет со значением 1.

Как говорил Мимино: "Я так думаю! "



Ведь этот код эквивалентен следующему:

i=0;
while(i<=5)
 { .......
   .......
  if(...) i=0;
  i++;
 }
 
Parabellum:
Parabellum:
kermit:

for (i=0;i<=5;i++)
  {
  ...
  if (flag==FALSE)
    {
    flag=TRUE;
    i=0; //цикл начинается с начала
    }
  }
Цель этой конструкции, чтобы при возникновении какой-то ошибки, цикл начинался заново. Значение flag контролируется в "...".

Она будет так работать?


Не проверял, но думаю, что будет следующее.
При первом проходе происходит присвоение i нуля. При следующем сначала идет увеличение i на единицу, а затем проверка условия. Теперь вы "портите" значение индекса внутри цикла. При возврате внутри цикла сперва будет увеличение i на 1, т.е. i пойдет со значением 1.

Как говорил Мимино: "Я так думаю! "



Ведь этот код эквивалентен следующему:

i=0;
while(i<=5)
 { .......
   .......
  if(...) i=0;
  i++;
 }

Супер!!!

Как-то не сообразил. :)

Только if ( ... ) i =-1 ;
Спасибо.