2015년 5월 19일 화요일

C/C++의 continue 명령

 반복문 안에서 사용되는 continue 명령은 뒤의 모든 실행문을 무시하고 반복문의 처음으로 돌아가게 된다.

반복명령어(for, do, while) {
   명령문1;
   continue;
   명령문2;
}

위에서 프로그램이 continue를 만나면 아래의 명령문2를 수행하지 않고 반복문의 다음 단계로 돌아간다. for문의 경우 변환문을 실행한 후 조건 검사를 하여 참이면 다시 반복을 시작할 것이고 while문은 조건 검사를 수행할 것이다.

for (int k=0; k<10; k++) {
    printf(“Hi “);
    continue;
    printf(“there. “);
}
int k=0;
while(k++ <= 10) {
    printf(“Hi “);
    continue;
    printf(“there. “);
}

이 예제를 수행하면 첫 번째 printf() 함수만 실행되므로 “Hi “만 열 번 화면에 출력될 것이다. continue 명령에 의해서 그 뒤의 printf()는 실행되지 않기 때문이다.

 보통은 조건문과 조합하여 특정 조건이 만족되면 반복문의 시작으로 되돌아가게끔 하는데 사용한다. 다음 예제는 1000 이하의 가장 큰 소수(prime number)를 구하는 것이다.

#include <stdio.h>
int main()
{
int ia;
for(ia = 1000; ia>=3; ia--) {
int ib = 1;
while(++ib<ia) {
if (ia%ib == 0) break;
}
if (ib<ia) continue; // 소수가 아님. 다음으로
break; // 소수이므로 빠져나감.
}
printf("%d",ia);
}

997

반복 변수 ia가 1000 부터 시작하여 1씩 감소하면서 그 수 가 소수인지 아닌지를 판별하는 것이다. while 반복문으로 2부터 ia-1 까지의 수로 모두 나눠보고 중간에 나누어 떨어지는 경우가 있다면 반복문을 종료한다. 만약 ia가 소수가 아니라면 ib<ia 이 참이므로 다음 수로 넘어간다. 아니라면 (즉, ia가 소수라면) for 반복문을 빠져나와서 결과를 표시한다.

 break문이 반복문을 완전히 빠져나가게 하는 것이고 continue문은 반복문을 계속 수행하게 한다는 것을 잘 구별해야 한다.



댓글 없음:

댓글 쓰기