다음을 통해 공유


for 문(C++)

조건이 false가 될 때까지 문을 반복적으로 실행합니다. 범위 기반 for 문에 대한 자세한 내용은 범위 기반 for 문(C++)을 참조하세요. C++/CLI for each 문에 대한 자세한 내용은 다음을 in참조하세요for each.

구문

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

설명

for 문을 사용하여 지정된 횟수를 실행해야 하는 루프를 생성합니다.

이 문은 for 다음 표와 같이 세 가지 선택적 부분으로 구성됩니다.

for 루프 요소

구문 이름 실행 시 설명
init-expression 문의 init-expression 다른 요소 앞에 for 한 번만 실행됩니다. 그런 다음 cond-expression으로 제어가 전달됩니다. 루프 인덱스를 초기화하는 데 자주 사용됩니다. 식 또는 선언을 포함할 수 있습니다.
cond-expression 첫 번째 반복을 포함한 statement의 각 반복을 실행하기 전에 statementcond-expression이 true(0이 아님)로 평가될 때만 실행됩니다. 정수 형식으로 명확한 변환을 하는 정수 형식 또는 클래스 형식으로 평가되는 식입니다. 일반적으로 루프 종료 기준을 테스트하는 데 사용됩니다.
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-expressionloop-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 루프 외부 statementfor 레이블이 지정된 문으로 실행될 때 종료됩니다. 루프의 문은 continuefor 현재 반복만 종료합니다.

생략하면 cond-expression 해당 루프가 고려되고 fortrue루프가 없거나 gotobreakreturnstatement내에서 종료되지 않습니다.

문의 세 필드는 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

기본적으로 /Ze루프에서 for 선언된 변수는 루프의 바깥쪽 범위가 끝날 때까지 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++)