for
문(C++)
조건이 false가 될 때까지 문을 반복적으로 실행합니다. 범위 기반 for
문에 대한 자세한 내용은 범위 기반 for
문(C++)을 참조하세요. C++/CLI for each
문에 대한 자세한 내용은 , 을 in
참조하세요for each
.
구문
for (
init-expression
;
cond-expression
;
loop-expression
)
statement
설명
for
문을 사용하여 지정된 횟수를 실행해야 하는 루프를 생성합니다.
문은 for
다음 표와 같이 세 가지 선택적 부분으로 구성됩니다.
for 루프 요소
구문 이름 | 실행 시 | Description |
---|---|---|
init-expression |
문의 다른 요소 앞에 for 는 init-expression 한 번만 실행됩니다. 그런 다음 cond-expression 으로 제어가 전달됩니다. |
루프 인덱스를 초기화하는 데 자주 사용됩니다. 식 또는 선언을 포함할 수 있습니다. |
cond-expression |
첫 번째 반복을 포함한 statement 의 각 반복을 실행하기 전에 statement 는 cond-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-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
내에서 statement
, 반환 또는 goto
(루프 외부 for
의 레이블이 지정된 문으로)가 실행될 때 break
종료됩니다. 루프의 문은 continue
for
현재 반복만 종료합니다.
를 생략하면 cond-expression
로 간주true
되며 for
, 또는 return
goto
내에서 statement
루프가 break
종료되지 않습니다.
문의 세 필드는 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
지역 변수로 승격합니다. 이름이 같은 지역 변수가 이미 있는 경우에도 승격됩니다.