C++의 for 루프를 사용하면 반복 작업을 쉽게 처리할 수 있다.
int main()
{
for (int i = 0; i < 5; i++)
std::cout << i << " ";
std::cout << std::endl;
return 0;
}
위 코드는 정수형 i가 0으로 초기화하여 5보다 작으면 실행하고, 한 바퀴당 i는 1씩 증가한다는 의미이다. 즉, i는 0부터 5가 될 때까지 반복한다.
for 루프의 각 부분
for 루프를 구성하는 각 부분은 순서대로 다음과 같은 단계를 처리한다.
- 조건 검사에 사용할 카운터 값을 초기화한다.
- 루프를 진행할 것인지 조건을 검사한다.
- 루프 몸체를 수행한다.
- 카운터 값을 갱신한다.
for 루프를 구성하는 각 부분들은 각자의 역할이 무엇인지 알기 쉬운 위치에 자리잡고 있다. 초기화(initialization), 조건 검사(test), 갱신(update)을 처리하는 for 루프의 세 제어 부분은 괄호로 묶여 있고 세미콜론(;)에 의해 분리되어 있다. 제어 부분 뒤에 오는 구문을 루프 몸체(body)라 한다.
초기화는 처음에 단 한 번만 수행한다. 일반적으로 초기화 표현식은 어떤 변수에 시작값을 설정한다.
조건 검사는 루프 몸체를 실행할 것인지 여부를 결정한다.
갱신은 루프 몸체를 실행한 후에 수행한다.
정리하자면 초기화 -> 조건 검사 -> 루프 몸체 -> 갱신 -> 조건 검사 -> 루프 몸체 -> ... 조건 검사에서 false가 나올 때 까지 반복이다.
갱신 크기 변경
for 루프의 예제로 지금까지 매 주기마다 1씩 증가시키고 있다. 그러나 갱신 표현식을 변경하면 갱신되는 크기를 바꿀 수 있다.
int main()
{
using namespace std;
int by;
cin >> by;
cout << "갱신 크기 : " << by << endl;
for (int i = 0; i < 100; i = i + by)
cout << i << endl;
return 0;
}
위 코드의 경우 만약 by에 100이상이 대입되는 경우 한 바퀴만 루프 몸체를 돌고 끝난다.
for 루프를 사용한 문자열 처리
for 루프를 사용하여 문자열을 구성하는 문자들에 차례대로 접근할 수 있다.
int main()
{
using namespace std;
string word = "Hello World!";
for (int i = 0; i < word.size(); ++i)
cout << word[i];
return 0;
}
좀 더 나아가서 거꾸로 문자열의 문자를 출력하는 것도 가능하다.
int main()
{
using namespace std;
string word = "Hello World!";
for (int i = word.size() - 1; i >= 0; i--)
cout << word[i];
return 0;
}
증가 연산자(++)와 감소 연산자(--)
증가 연산자와 감소 연산자를 합쳐서 증감 연산자라고 부른다. 접두어(prefix) 방식과 접미어(postfix) 방식으로 사용하는데, 둘이 가져오는 효과는 동일하지만, 둘의 의미는 다른 의미를 갖는다.
x++; // 접미어 방식
++x; // 접두어 방식
접미어는 나중에 증감시키고, 접두어는 바로 증감시킨다. 나중의 의미는 줄이 넘어가는 순간이다.
int main()
{
using namespace std;
int a = 10;
cout << "접미어 : "<< a++ << endl;
cout << "결과 : " << a << endl;
cout << "-----------------" << endl;
cout << "접두어 : " << ++a << endl;
cout << "결과 : " << a;
return 0;
}
접미어의 경우 다음 줄로 넘어가서야 1이 증가되고, 접두어의 경우 바로 1이 증가된다는 것을 볼 수있다.
'서적 정리 > C++ 기초 플러스' 카테고리의 다른 글
21.배열의 대안 (0) | 2022.08.09 |
---|---|
20.변수형의 조합 (0) | 2022.08.09 |
19.포인터, 배열, 포인터 연산 (0) | 2022.08.09 |
18.포인터와 메모리 해제 (0) | 2022.08.03 |
17.열거체(enumeration) (0) | 2022.08.03 |
16.공용체(union) (0) | 2022.08.03 |
15.구조체(struct) (0) | 2022.08.03 |
14.string 클래스 (0) | 2022.07.29 |
댓글