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 |