Переход continue

Оператор continue прерывает выполнение текущей итерации самого внутреннего цикла, содержащего continue, и инициирует следующую итерацию. Оператор может использоваться только внутри циклов for, while и do. Выполнение continue внутри for приводит к очередному расчету выражения в заголовке цикла (инкремент/декремент переменной цикла), после чего проверяется условие на продолжение цикла. Выполнение continue внутри while или do сразу приводит к проверке условия в заголовке цикла.

Инструкция состоит из ключевого слова continue и точки с запятой:

continue ;

Она обычно помещается в одну из веток условного оператора if/else или switch.

Например, мы можем сгенерировать таблицу умножения с пропусками: когда произведение двух индексов нечетное, соответствующий элемент массива останется нулевым (StmtJumpContinue.mq5).

int a[10][10] = {0};
for(int i = 0i < 10; ++i)
{
   for(int j = 0j < 10; ++j)
   {
      if((j * i) % 2 == 1)
         continue;
      a[i][j] = (i + 1) * (j + 1);
   }
}
ArrayPrint(a);

А вот как можно подсчитать сумму положительных элементов массива.

int b[10] = {1, -234, -5, -678, -910};
int sum = 0;
for(int i = 0i < 10; ++i)
{
   if(b[i] < 0continue;
   sum += b[i];
}
Print(sum); // 33

Обратите внимание, что этот же цикл можно переписать без continue, но с большей вложенностью блоков кода:

for(int i = 0i < 10; ++i)
{
   if(b[i] >= 0)
   {
      sum += b[i];
   }
}

Таким образом, оператор continue часто применяется для упрощения форматирования кода (особенно, если условий для "отсечки" несколько), но какой из двух подходов выбрать — вопрос личных предпочтений.