4.7 continue 명령     [doc]     [smts]

반복문 안에서 사용되는 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()는 실행되지 않기 때문이다.


 다음 예는 0부터 100까지의 정수 중 3의 배수가 아닌 것들만 출력하는 프로그램이다.


0407-01.c

#include <stdio.h>
int main() {
   for (int ia=0; ia<=100; ia++) {
       if (ia%3 == 0) continue;
       printf("%d ",ia);
   }
}

실행 결과

1 2 4 5 7 8 10 11 13 14 16 17 19 20 22 23 25 26 28 29 31 32 34 35 37 38 40 41 43 44 46 47 49 50 52 53 55 56 58 59 61 62 64 65 67 68 70 71 73 74 76 77 79 80 82 83 85 86 88 89 91 92 94 95 97 98 100


만약 ia%3==0 이 참, 즉 ia가 3의 배수라면 continue 문에 의해 밑의 printf() 함수는 실행되지 않고 다음 단계로 넘어간다.


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


0407-02.c
#include <stdio.h>
int main() {
  for (int ia = 1000; ia>=2; ia--) {
      int ib = 2;
      while( ib <= ia/2 ) {
          if (ia%ib == 0) break;
          ib++;
      }
      if (ib <= ia/2) continue;
      printf("result: %d\n", ia);  //❷
      break;
  }
}

997


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


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



'프로그래밍언어.Lib > C,C++' 카테고리의 다른 글

C/C++의 연산자 종류  (0) 2015.05.19
C/C++의 goto 명령  (0) 2015.05.19
C/C++의 break 명령  (0) 2015.05.19
C/C++ 의 do ~ while 반복문  (0) 2015.05.18
C/C++ 의 while 반복문  (0) 2015.05.18
Posted by 살레시오
,