for
оператор (C++)
Выполняет оператор повторно до тех пор, пока условное значение не станет false. Сведения об инструкции на основе for
диапазона см. в инструкции на основе for
диапазона (C++). Дополнительные сведения об инструкции C++/CLI for each
см. в статье . in
for each
Синтаксис
for (
init-expression
;
cond-expression
;
loop-expression
)
statement
Замечания
Используйте инструкцию for
для создания циклов, которые должны выполнять указанное количество раз.
Инструкция for
состоит из трех необязательных частей, как показано в следующей таблице.
для элементов цикла
Имя синтаксиса | При выполнении | Description |
---|---|---|
init-expression |
Перед выполнением любого другого элемента инструкции for init-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++ ) {}
}
Это поведение более тесно имитирует стандартное поведение переменной, объявленной в цикле, которая требует переменных, объявленных в for
for
цикле, чтобы выйти из области после завершения цикла. Когда переменная объявлена в for
цикле, компилятор внутренне повышает его в локальную переменную в for
заключающей области цикла. Он повышен, даже если есть уже локальная переменная с тем же именем.
См. также
Инструкции итерации
Ключевые слова
Оператор while
(C++)
Оператор do-while
(C++)
Оператор на основе for
диапазона (C++)
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по