continue문

continue문

break문과 마찬가지로 continue문도 반복문과 관련이 있습니다. 그리고 일반적으로 if문과 함께 자주 사용됩니다. 두 분기문이 유사한 점이 있으나 기능 측면에서 혼동을 발생 시킬 수 있으므로 주의가 필요합니다. continue문도 break문과 동일하게 아래처럼 간단한 형식을 취합니다.
continue ; 의 형태로 반복문 내부에 삽입됩니다.
반복문 안에서 continue문이 실행 되면 현재 실행중인 위치와 무관하게 반복문의 조건식으로 위치를 이동합니다.
그리고 검사 결과 조건식을 만족하면 다시 반복 영역을 시행합니다.
즉 , 실행된 continue문 이후의 부분을 실행하는 것이 아닙니다.
continue문의 이후는 생략을 하고 반복문의 조건식을 검사하여 조건식 충족 여부에 따라서 다시 실행합니다.
아래 예제는 2의 배수와 3의 배수는 출력이 안 되게 하고 1이상 30 미만의 정수를 출력하는 예제입니다.

1.#include <stdio.h>
2.
3.int main(void)
4.{
5.	int number;
6.	printf("시작 ! ");
7.	
8.	for(number=0; number<30; number++)
9.	{
10.		if(number%2==0 || number%3==0)
11.			continue;
12.		printf("%d ", number);
13.	}
14.	printf("끝 ! \n");
15.	return 0;
16. }

실행 결과는 다음과 같습니다.

시작 ! 1 5 7 11 13 17 19 23 25 29 끝 !

number의 값이 10행의 if 조건식을 충족하면 11행의 continue문이 실행됩니다. 따라서 , 12행의 반복문이 실행되지 않고 다시 8행의 조건식으로 위치를 바꿉니다.
이 경우에 number의 값은 원래 대로 증가합니다. 즉 number가 4인 경우 11행의 continue문에 의해 12행을 수행하지 않고 8행으로 이동하였을 때 number의 값은 0 이 아니라 5입니다.
break문과 continue문은 그 기능들을 혼동하기 쉬우니 다시 한번 정리 해 봅시다.

1.int main(void)
2.{
3.  ...
4.   while(1) //1은 true를 의미하므로 무한 반복
5.  {
6.    ....
7.   if(a >10)
8.    break ;
9.   ....
10.   }
11.  ...
12.}
1.int main(void)
2.{
3.  ...
4.   while(1) //1은 true를 의미하므로 무한 반복
5.  {
6.    ....
7.   if(a >10)
8.    continue ;
9.   ....
10.   }
11.  ....
12.}

첫 번째의 예제는 8행의 break문에 의해 반복문을 벗어나므로 10행을 빠져나갑니다. 그리고 11행부터 진행됩니다.
두 번째의 예제는 7행의 continue문의 역할로 4행의 조건식으로 이동합니다.

지금까지 while문 , do~while문 , for문 등의 반복문과 중첩 반복문에 대하여 알아보았습니다. 그리고 그 반복문들을 이미 주어진 조건 또는 종료식 이외에 어떤 방법을 이용하여 탈출할 수 있는지 알아보았습니다.
그리고 무한 루프(무한 반복)을 벗어나기 위해선 continue문 보다 break문이 더 유용하다고 할 수 있습니다.