본문 바로가기
개발/C, C++

[c/c++] for문

by 77monkey 개발자 2023. 8. 16.
반응형

for문에 대해서 이번에 적어보려고 한다.

if문에 비해서 for문은 생각보다 어려울 수 있다.

하지만 천천히 잘 따라오길 바란다.

 

for문 형식

for (초기화; 조건; 변수 증감) {

}

 

for문 설명

for문 형식에서 보는 것을 하나씩 해석하면 아래와 같다. 

1) 초기화를 한다. 보통 변수 증감에 대한 변수를 초기화 하게 된다. 
2) 조건을 확인한다. 보통 조건에 대한 참/거짓에 따라서 for문을 반복 여부를 결정하게 된다. 
3) 변수 증감을 한다. 변수가 증감함에 따라서 조건이 참/거짓이 되어 for문을 탈출할 수 있도록 한다. 

 

for문 예시

역시 말로만 되어 있으면 헷갈리는 것 같다.

예시가 있어야지 이해가 쉬운 것 같다.

#include <stdio.h>

int main() {

	for (int i = 0; i < 10; i++)
	{
		printf("%d\n", i);
	}

	return 0;
}

int i 라는 변수를 for 문 위에서 선언해도 되지만, 위와 같이 for문 안에 서 선언할 수 있다. 

그러면 for 문 내에서만 i 라는 변수를 사용할 수 있다.

1) i를 0으로 초기화를 하고 

2) i 가 10보다 작은지 확인을 한다. 10보다 작기 떄문에 아래 중괄호 블럭을 실행하게 된다. 

3) i를 1 증가시켜서 1이 된다. 

4) i가 1가 10보다 작은지 확인을 한다. 

5) i를 1 증가시킨다. 

4), 5)번을 반복하다가 i가 10보다 같거나 커지는 순간 탈출하게 된다. 

결과는 아래와 같다. 

0
1
2
3
4
5
6
7
8
9

 

continue 문

continue는 중괄호에 남은 코드를 실행하지 않고 변수 증감 부분으로 넘어간다. 

코드를 보면서 다시 확인해 보자.

#include <stdio.h>

int main() {

	for (int i = 0; i < 10; i++)
	{
		if (i % 3 == 0)
			continue;

		printf("%d\n", i);
	}

	return 0;
}

i % 3은 i를 3으로 나눴을 때 나머지를 구하는 식이다. 

이게 0이라는 의미는 3의 배수를 의미한다. ex) i = 0, 3, 6, 9

그 때마다 continue를 하도록 했다. 

그러면 i가 10보다 작아서 for문 중괄호로 왔는데 i가 3의 배수이면 바로 i++로 i가 증가하게 된다. 

그리고 다시 i가 10보다 작은지 확인한다. for문 중괄호로 다시 오게 되어서 i가 3의 배수인지 확인하고 3의 배수가 아니면 printf문을 출력하게 된다. 

결과를 보면 아래와 같다.

1
2
4
5
7
8

 

break 문

break문은 for문의 조건에 도달하기 전에 for문을 나갈 수 있다. 

이 때 주의할 점은 break 문이 있는 for문만 나간다는 것이다. 

중첩 for문을 쓸 수 있는 상황에서 2번 for문을 나가려고 하면 좀 까다롭다.

이건 추후에 다른 page에서 다루도록 하겠다.

그럼 break문도 예를 들어보겠다. 

continue에서는 3의 배수이면 continue를 했는데, 이번에는 5가 되면 break을 하는 코드를 만들어 보겠다.

5의 배수가 되면 break를 하려고 했는데, 그러면 i가 0일 때 만족을 해서 for문이 종료가 된다... 그래서 바꿨다.

#include <stdio.h>

int main() {

	for (int i = 0; i < 10; i++)
	{
		if (i == 5)
			break;

		printf("%d\n", i);
	}

	return 0;
}

위와 같은 코드일 경우에 i가 5일 경우에 if문 조건식이 참이 되어서 break가 된다. 

그러면 밑에 printf문이 출력되지 않고 for문을 나가게 된다. 

결과는 아래와 같다.

0
1
2
3
4

 

마무리

오늘은 for문에 대해서 정리해 보았다. 

이 정도 알고 있으면 for문을 사용하는데 큰 어려움은 없을 것이라고 생각된다. 

혹시나 기회가 된다면 중첩 for문이나, for문의 다양한 형태에 대해서 써볼까 한다.

반응형

'개발 > C, C++' 카테고리의 다른 글

[c/c++] while문  (0) 2023.08.17
[c/c++] for문 (2)  (1) 2023.08.16
[c/c++] if 문  (0) 2023.08.14
[c/c++] 제어문 조건  (0) 2023.08.14
[c/c++] main 함수  (0) 2023.08.14