' [C/C++] 9.5강 - for, while에서 break, continue

Programming/C & C++

[C/C++] 9.5강 - for, while에서 break, continue

mdisprgm 2022. 1. 17. 11:31
728x90

(1) break

switch에서는 break;를 했을 때 해당 case에서 탈출했다.

 

같은 원리로 while과 for에서 break를 쓰면 해당 반복 루프를 탈출하여

 

다음 코드를 실행한다.

 

아주 단적인 예제를 보자.

#include <stdio.h>

int main() {
	int i = 0;
	while (1) {
		printf("%d, ", i++);
		if (i % 10 == 0) printf("\n");
		if (i > 100) break;
	}
}

1~100까지의 수를 출력하는 코드이다.

 

물론 for를 써도 되지만 break를 써먹기 위해 while을 사용하였다.

 

i가 100보다 커질 때까지 무한 루프를 돌다가 101이 됐을 때 break; 하여 while 루프를 빠져나온다.

 

물론 for에서도 break;를 사용할 수 있다.

 

 

(2) continue

continue는 직역했을 때 "계속하다" 라는 의미를 가진다.

 

C에서도 그 의미 그대로 쓰인다.

 

while이나 for의 조건에 상관 없이 그 루틴을 끝낸다.

 

중요한 것은 반복 루프 자체를 탈출하는 것이 아니라

 

해당 반복 회차(?)만 끝낸다는 것이다.

 

즉, 이하 코드만 실행되지 않고 여전히 i++을 하고 다시 코드를 실행한다.

 

예시로 1~100 범위에서 짝수만 출력하는 코드를 작성했다.

 

i += 2;와 같이 하는 게 더 편하지만

 

continue를 써먹기 위해서 1 단위로 반복한다.

#include <stdio.h>

int main() {
	for (int i = 1; i < 101; i++) {
		if (i % 2) continue;
		printf("%3d, ", i);
		if (i % 5 == 0) printf("\n");
	}
}

i를 2로 나눈 나머지가 0이 아닌, 즉 1이 나와서 조건이 true가 되면 continue하여

 

아래 printf와 줄바꿈용 if문은 거쳐가지 않는다.

 

 

if(i % 2 == 0) {

printf(...);

}

물론 이렇게 if문으로 짝수일 때만 출력하게 만들 수도 있다.

 

그러나 걸러야 할 경우가 더 많아지거나 한다면

 

continue 구문을 유용하게 사용할 수 있을 것이다.

 

 

끝.

 

728x90

'