для выписки (C++)
Выполняет выписка и цикл- выражение до cond- выражение не будет иметь значение false.Дополнительные сведения о диапазон- зависимости для выписки см. в разделе Основанное на диапазоне выражение for (C++).
for ( init-expression ; cond-expression ; loop-expression )
statement
Заметки
Использование оператора for для построения циклы, которые должны выполняться заданное число раз.
Выписка for состоит из 3 частей необязательных, как показано в следующей таблице.
для элементов цикла
Имя синтаксиса |
Выполняется |
Содержимое |
---|---|---|
init-выражение |
Перед любым другим элементом выписки for.init- выражение выполняется только один раз.Элемент управления затем передается в cond- выражения. |
Часто используется для инициализации индексы цикла.Он может содержать выражения или объявления (C - только C-++). |
cond-выражение |
Перед выполнением каждой итерации выписки, включая первой итерации.выписка выполняется только в том случае, если cond- выражение принимает значение true, (значение не равно нулю). |
Выражение, определяющее целочисленному типу или типу класса, имеющий точно выраженное преобразование к целочисленному типу.Обычно используется для выполнения для критериев цикл- завершения. |
цикл-выражение |
В конце каждой итерации выписки.После цикл- выражение выполняется, cond- выражение вычисляется. |
Обычно используется для увеличения значения индексов цикла. |
Например:
// for_statement1.cpp
#include <stdio.h>
int main() {
int i;
for ( i = 0 ; i < 2 ; i++ )
printf_s( "\n%d\n",i );
}
Предыдущий цикл for эквивалентен следующему цикл while:
// for_statement2.cpp
#include <stdio.h>
int main()
{
int i = 0;
while ( i < 2 )
printf_s( "%d\n", i++ );
}
init- выражение и цикл- выражения могут содержать несколько разделенных выписки оператор-запятая.Например:
// for_statment3.cpp
#include <stdio.h>
int main()
{
int i, j;
for ( i = 5, j = 10 ; i + j < 20; i++, j++ )
printf_s( "\n i + j = %d", (i + j) );
}
Цикл for заканчивается, когда выполняются прерывание, return или переход (для оператора с идентификатором за пределами цикла for ) в рамках выписки.Выписка continue в цикле for завершает только текущую итерацию.
Если cond- выражение не задано, то считается true и цикл for не завершена, break, return или переход внутри выписки.
Удобный способ определения бесконечный цикл с помощью оператора for выглядит следующим образом:
for( ; ; )
{
// Statements to be executed.
}
Хотя 3 поля выписки for обычно используются для инициализации, тестирования для завершения и увеличение, они не ограничиваются данным используют.Например, следующий код выводит от 0 до 4.В этом случае выписка выражение NULL:
// for_statement4.cpp
#include <stdio.h>
int main()
{
int i;
for( i = 0; i < 5; printf_s("%d\n", i), i++)
;
}
циклы for стандарта C и C-++
Стандарт C-++ C указывает, что переменная была объявлена в цикле for уйдет из области видимости после завершения цикла for.Например:
for (int i = 0 ; i < 5 ; i++) {
// do something
}
// i is now out of scope under /Za or /Zc:forScope
По умолчанию в /Ze, переменная была объявлена в цикле for остается в области, пока область внешнего цикла for не будет закончена.
/Zc: forScope включает стандартное расширение функциональности переменных, объявленных в для циклов без указания /Za.
Также можно использовать различия в области цикла for к переменным redeclare параметра /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, даже если уже локальная переменная с тем же именем.