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을 실행하기 전에 statement 은 true(0이 아닌)로 평가되는 경우에만 cond-expression 실행됩니다. 정수 형식 또는 정수 형식으로 명확하게 변환되는 클래스 형식으로 계산되는 식입니다. 일반적으로 루프 종료 조건을 테스트하는 데 사용됩니다.
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++)