for оператор (C++)

Выполняет оператор повторно до тех пор, пока условное значение не станет false. Сведения об инструкции на основе for диапазона см. в инструкции на основе for диапазона (C++). Дополнительные сведения об инструкции C++/CLI for each см. в статье . infor each

Синтаксис

for ( init-expression ; cond-expression ; loop-expression )
statement

Замечания

Используйте инструкцию for для создания циклов, которые должны выполнять указанное количество раз.

Инструкция for состоит из трех необязательных частей, как показано в следующей таблице.

для элементов цикла

Имя синтаксиса При выполнении Description
init-expression Перед выполнением любого другого элемента инструкции forinit-expression только один раз. Затем управление передается cond-expression. Часто используется для инициализации индексов цикла. Может содержать выражения или объявления.
cond-expression Перед выполнением каждой итерации statement, включая первую итерацию. statement выполняется, только если cond-expression имеет значение true (не равное нулю). Выражение, значение которого относится к целочисленному типу или типу класса, для которого имеется однозначное преобразование к целочисленному типу. Обычно используется для проверки критериев завершения цикла for.
loop-expression В конце каждой итерации statement. После выполнения loop-expression производится вычисление cond-expression. Обычно используется для приращения индексов цикла.

В следующих примерах показаны различные способы использования инструкции for .

#include <iostream>
using namespace std;

int main() {
    // The counter variable can be declared in the init-expression.
    for (int i = 0; i < 2; i++ ){
       cout << i;
    }
    // Output: 01
    // The counter variable can be declared outside the for loop.
    int i;
    for (i = 0; i < 2; i++){
        cout << i;
    }
    // Output: 01
    // These for loops are the equivalent of a while loop.
    i = 0;
    while (i < 2){
        cout << i++;
    }
    // Output: 01
}

init-expression и loop-expression могут содержать несколько операторов, разделенных запятыми. Например:

#include <iostream>
using namespace std;

int main(){
    int i, j;
    for ( i = 5, j = 10 ; i + j < 20; i++, j++ ) {
        cout << "i + j = " << (i + j) << '\n';
    }
}
/* Output:
    i + j = 15
    i + j = 17
    i + j = 19
*/

loop-expression можно увеличить или уменьшить, или изменить другими способами.

#include <iostream>
using namespace std;

int main(){
for (int i = 10; i > 0; i--) {
        cout << i << ' ';
    }
    // Output: 10 9 8 7 6 5 4 3 2 1
    for (int i = 10; i < 20; i = i+2) {
        cout << i << ' ';
    }
}
// Output: 10 12 14 16 18

for Цикл завершается при breakвыполнении оператора, возвращаемого или goto (к помеченной инструкции за пределами for цикла).statement Оператор continue в цикле for завершает только текущую итерацию.

Если cond-expression опущен, считается true, что for этот цикл не завершается без break, returnили goto внутри statement.

Хотя три поля for инструкции обычно используются для инициализации, тестирования для завершения и добавок, они не ограничиваются этими использованием. Например, следующий код выводит числа от 0 до 4. В данном случае statement является оператором null:

#include <iostream>
using namespace std;

int main()
{
    int i;
    for( i = 0; i < 5; cout << i << '\n', i++){
        ;
    }
}

for циклы и стандарт C++

Стандарт C++ говорит, что переменная, объявленная в циклеfor, должна выйти из область после for завершения цикла. Например:

for (int i = 0 ; i < 5 ; i++) {
   // do something
}
// i is now out of scope under /Za or /Zc:forScope

По умолчанию переменная, объявленная в циклеfor, /Zeостается в область, пока for цикл не заканчивается область.

/Zc:forScope обеспечивает стандартное поведение переменных, объявленных в циклах без необходимости указывать /Za.

Кроме того, можно использовать различия for области цикла для повтора переменных /Ze , приведенных ниже.

// for_statement5.cpp
int main(){
   int i = 0;   // hidden by var with same name declared in for loop
   for ( int i = 0 ; i < 3; i++ ) {}

   for ( int i = 0 ; i < 3; i++ ) {}
}

Это поведение более тесно имитирует стандартное поведение переменной, объявленной в цикле, которая требует, чтобы переменные, объявленные в forfor цикле, выходили из область после завершения цикла. Когда переменная объявлена в for цикле, компилятор внутри него способствует локальной переменной в for замкнутом цикле область. Он повышен, даже если есть уже локальная переменная с тем же именем.

См. также

Инструкции итерации
Ключевые слова
Оператор while (C++)
Оператор do-while (C++)
Оператор на основе for диапазона (C++)