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 는 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
루프 외부의 break
레이블이 지정된 문으로, 반환 또는 goto
루프 외부 statement
의 for
레이블이 지정된 문으로 실행될 때 종료됩니다. 루프의 문은 continue
for
현재 반복만 종료합니다.
생략하면 cond-expression
해당 루프가 고려되고 for
true
루프가 없거나 goto
break
return
statement
내에서 종료되지 않습니다.
문의 세 필드는 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
지역 변수로 승격합니다. 이름이 같은 지역 변수가 이미 있는 경우에도 승격됩니다.
참고 항목
피드백
https://aka.ms/ContentUserFeedback을 참조하세요.
출시 예정: 2024년 내내 콘텐츠 피드백 메커니즘인 GitHub 문제를 단계적으로 폐지하고 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은다음에 대한 사용자 의견 제출 및 보기