06.06 - for 문 (for statement)
C++에서 가장 많이 사용하는 반복문은 for 문이다. for 문은 각 반복 후에 루프 변수의 값을 쉽게 정의, 초기화 및 변경할 수 있기 때문에 반복해야 하는 횟수를 정확히 알고 있을 때 사용하기 좋다.
for (초기식; 조건식; 변화식)
statement // 반복할 명령문
for 루프를 이해하기 가장 쉬운 방법은 for 루프를 while 루프를 변환하는 것이다.
{
초기식;
while (condition-expression)
{
statement; // 반복할 명령문
변화식;
}
}
루프 내부에 정의된 변수는 루프 스코프라고 하는 특별한 종류의 스코프가 있다. 루프 스코프(loop scope)가 있는 변수는 루프 내에서만 존재하며, 루프 외부에서는 접근할 수 없다.
Evaluation of for statements
for 문은 세 부분으로 평가된다.
- 초기식을 평가한다. 일반적으로 초기식은 변수 정의와 초기화로 구성된다. 이 문은 루프가 처음 실행될 때 한 번만 평가된다.
- 조건식이 평가된다. 이 값이 false로 평가되면 루프가 즉시 종료된다. 이 값이 true로 평가되면 명령문이 실행된다.
- 명령문이 실행된 후, 변화식이 평가된다. 일반적으로 이 표현식은 초기식에서 선언한 변수를 증가 또는 감소시키는데 사용된다. 변화식이 실행된 후 루프는 2단계로 돌아간다.
for (int count = 0; count < 10; ++count)
std::cout << count << " ";
먼저, 이름이 count인 변수를 선언하고 값을 0으로 초기화한다.
둘째, count가 0이므로 count < 10은 true로 평가된다. 그러므로 명령문이 실행되고 0이 출력된다.
셋째, ++count가 계산되고 count가 1로 증가한다. 그러면 루프가 두 번째 단계로 돌아간다.
이제 1 < 10이 true로 평가되므로 루프가 다시 반복된다. 명령문은 1을 출력하고 count는 2로 증가한다. 2 < 10은 true로 평가되고, 명령문은 2를 출력하고 count는 3으로 증가한다.
결국 count는 10으로 증가하고 10 < 10은 false로 평가되므로 루프가 종료된다.
따라서 위 프로그램은 다음과 같은 결과를 출력한다.
0 1 2 3 4 5 6 7 8 9
Nested for loops
다른 유형의 루프와 마찬가지로 for 루프는 다른 루프 안에 중첩될 수 있다.
#include <iostream>
int main()
{
for (char c = 'a'; c <= 'e'; ++c) // outer loop on letters
{
std::cout << c; // print our letter first
for (int i = 0; i < 3; ++i) // inner loop on all numbers
std::cout << i;
std::cout << '\n';
}
return 0;
}
외부 루프의 반복마다 내부 루프가 전체적으로 실행된다. 결과적으로 출력은 다음과 같다.
a012
b012
c012
d012
e012
외부 루프가 먼저 실행되고 char c
가 'a'로 초기화된다. 그다음 c
가 'a'로 설정된 상태로 루프 본체가 실행된다. 루프 본체는 'a'를 출력하고 내부 루프를 실행한다. ('0', '1', '2'를 출력한다.) 그다음 줄 바꿈을 출력하고 루프 본체가 완료되었으므로 외부 루프의 맨 위로 돌아가서 변화식을 수행한 다음 조건식을 평가한다. 변수 c
는 'b' 이므로 조건식을 true
로 평가되어 다시 외부 루프를 실행한다. 그러면 "b012\n"이 출력된다. 등등..
번역: 이 포스트의 원문은 http://www.learncpp.com/cpp-tutorial/57-for-statements/ 입니다.