조건이 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-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 루프 외부 statement 의 for 레이블이 지정된 문으로 실행될 때 종료됩니다. 루프의 문은 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 지역 변수로 승격합니다. 이름이 같은 지역 변수가 이미 있는 경우에도 승격됩니다.