for문 (c + +)for statement (C++)

조건이 false가 될 때까지 문을 반복적으로 실행합니다.Executes a statement repeatedly until the condition becomes false. 범위 기반 문에 대 한 자세한 내용은 for 범위 기반 for 문 (c + +)을 참조 하세요.For information on the range-based for statement, see Range-based for statement (C++).

구문Syntax

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

설명Remarks

문을 사용 for 하 여 지정 된 횟수 만큼 실행 해야 하는 루프를 생성 합니다.Use the for statement to construct loops that must execute a specified number of times.

for 문은 다음 표와 같이 세 가지 선택적 부분으로 구성 됩니다.The for statement consists of three optional parts, as shown in the following table.

for 루프 요소for loop elements

구문 이름Syntax name 실행 되는 경우When executed 설명Description
init-expression 문의 다른 요소 앞 forinit-expression 는 한 번만 실행 됩니다.Before any other element of the for statement, init-expression is executed only once. 그러면 컨트롤이로 전달 cond-expression 됩니다.Control then passes to cond-expression. 루프 인덱스를 초기화하는 데 자주 사용됩니다.Often used to initialize loop indices. 식 또는 선언을 포함할 수 있습니다.It can contain expressions or declarations.
cond-expression 첫 번째 반복을 포함 하 여 각 반복을 실행 하기 전에 statementBefore execution of each iteration of statement, including the first iteration. statement 는가 cond-expression true (0이 아님)로 평가 되는 경우에만 실행 됩니다.statement is executed only if cond-expression evaluates to true (nonzero). 정수 형식으로 명확한 변환을 하는 정수 형식 또는 클래스 형식으로 평가되는 식입니다.An expression that evaluates to an integral type or a class type that has an unambiguous conversion to an integral type. 일반적으로 루프 종료 기준을 테스트하는 데 사용됩니다.Normally used to test for loop-termination criteria.
loop-expression 의 각 반복이 끝날 때 statementAt the end of each iteration of statement. loop-expression 가 실행 된 후 cond-expression 가 계산 됩니다.After loop-expression is executed, cond-expression is evaluated. 일반적으로 루프 인덱스 증가에 사용됩니다.Normally used to increment loop indices.

다음 예에서는 문을 사용 하는 다양 한 방법을 보여 줍니다 for .The following examples show different ways to use the for statement.

#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-expressionloop-expression 은 쉼표로 구분 된 여러 문을 포함할 수 있습니다.init-expression and loop-expression can contain multiple statements separated by commas. 예를 들면 다음과 같습니다.For example:

#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 증가 또는 감소 하거나 다른 방식으로 수정할 수 있습니다.loop-expression can be incremented or decremented, or modified in other ways.

#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 됩니다.A for loop terminates when a break, return, or goto (to a labeled statement outside the for loop) within statement is executed. continue루프의 문은 for 현재 반복만 종료 합니다.A continue statement in a for loop terminates only the current iteration.

cond-expression 생략 하면로 간주 되 true 고, for break 또는 내에서 루프가 종료 되지 않습니다 return goto statement .If cond-expression is omitted, it's considered true, and the for loop won't terminate without a break, return, or goto within statement.

문의 세 필드는 for 일반적으로 초기화에 사용 되 고 종료를 테스트 하는 데 사용 되지만 이러한 사용으로 제한 되지 않습니다.Although the three fields of the for statement are normally used for initialization, testing for termination, and incrementing, they're not restricted to these uses. 예를 들어, 다음 코드는 0부터 4까지의 숫자를 인쇄합니다.For example, the following code prints the numbers 0 through 4. 이 경우 statement 은 null 문입니다.In this case, statement is the null statement:

#include <iostream>
using namespace std;

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

for루프 및 c + + 표준for loops and the C++ Standard

C + + 표준에서는 루프에서 선언 된 변수가 for 루프가 끝난 후 범위를 벗어나는 것으로 for 나타납니다.The C++ standard says that a variable declared in a for loop shall go out of scope after the for loop ends. 예를 들면 다음과 같습니다.For example:

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

기본적으로 /ze에서 루프에 선언 된 변수는 for for 루프의 바깥쪽 범위가 종료 될 때까지 범위 내에 남아 있습니다.By default, under /Ze, a variable declared in a for loop remains in scope until the for loop's enclosing scope ends.

/Zc: forScope 는를 지정할 필요 없이 루프에 대해 선언 된 변수의 표준 동작을 사용 하도록 설정 /Za 합니다./Zc:forScope enables standard behavior of variables declared in for loops without needing to specify /Za.

다음과 같이 루프의 범위 차이를 사용 하 여 for 변수를 다시 선언할 수도 있습니다 /Ze .It's also possible to use the scoping differences of the for loop to redeclare variables under /Ze as follows:

// 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 완료 한 후 범위를 벗어날 수 있습니다.This behavior more closely mimics the standard behavior of a variable declared in a for loop, which requires variables declared in a for loop to go out of scope after the loop is done. 변수가 루프에서 선언 되 면 for 컴파일러는 내부적으로 for 루프의 바깥쪽 범위에서 지역 변수로이를 승격 합니다.When a variable is declared in a for loop, the compiler internally promotes it to a local variable in the for loop's enclosing scope. 이름이 같은 지역 변수가 이미 있는 경우에도 승격 됩니다.It's promoted even if there's already a local variable with the same name.

참조See also

반복 문Iteration statements
C++ 키워드Keywords
while 문 (c + +)while statement (C++)
do-while 문 (c + +)do-while statement (C++)
범위 기반 for 문 (c + +)Range-based for statement (C++)