[C언어] continue 와 break

ET의 공부/C언어|2020. 12. 19. 19:34

Loop 안의 코드는 루프가 끝날때까지 모든 코드를 실행합니다. continue와 break문은 이러한 루프문에서 코드를 건너뛰거나 루프를 끝내는데 사용하게 됩니다.

 

continue 문

continue는 "계속" 이라는 뜻을 갖고 있습니다. 그럼 코드를 "계속" 실행하라는 의미로 받아들여질수 있으나, 여기에서 "계속"은 아래 코드를 생략하고 "계속" 루프를 실행해라 라는 의미로 받아들이면 될것 같습니다.

프로그램이 continue문을 만나게 되면 프로그램은 루프안의 continue문 아래의 코드를 건너뛰고 다음 루프 사이클을 실행하게 됩니다. 만약 중첩된 루프안에 continue 문이 있다면 continue문을 포함한 루프의 내부에만 영향을 받습니다.

 

continue 의 동작

 

그럼 continue문이 있고 없고의 차이를 한번 비교하는 코드를 보겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
 
int main()
{
    int i = 0;
    while(i<30){
        i++;
        if(i%2 == 0){
            printf("%d 는 짝수\n",i);
        }
        else{
            printf("%d 는 홀수\n",i);
        }
    }
    return 0;
}
 
//1 는 홀수
//2 는 짝수
//3 는 홀수
//4 는 짝수
//...
//...
//30 는 짝수

 

짝수 홀수를 판별하는 코드입니다. 그럼 여기서 else(홀수 부분)에 continue 문을 넣어보겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
int main()
{
    int i = 0;
    while(i<30){
        i++;
        if(i%2 == 0){
            printf("%d 는 짝수\n",i);
        }
        else{
            continue;
            printf("%d 는 홀수\n",i);
        }
    }
    return 0;
}
 
//2 는 짝수
//4 는 짝수
//6 는 짝수
//8 는 짝수

 

 분명 "홀수"를 출력하는 printf가 있었지만 continue 문을 만나 다시 while문의 조건식으로 돌아가 다시 코드가 실행되는 결과를 보실 수 있습니다. 물론 위의 코드는 continue문의 예시일뿐 else문의 블록안에 아무 코드도 넣지 않으면 짝수만 출력하는 코드가 됩니다.

 

continue를 사용하는 이유로는 들여쓰기를 줄일수 있기 때문입니다.(가독성) 만약 continue를 사용했을경우 코드가 더 복잡해진다면 사용하지 않는 것이 좋습니다.

 

break문

루프안에 있는 break문은 루프를 탈출시켜 다음 문장을 실행합니다.

 

break의 동작

위의 코드를 응용하여 break 문을 만들어 보겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int main()
{
    int i = 0;
    while(i<30){
        i++;
        if(i%2 == 0){
            printf("%d 는 짝수\n",i);
            break;
        }
    }
    return 0;
}
 
//2 는 짝수

 

break 문을 만나게 되면 루프를 탈출하기 때문에 printf("%d 는 짝수\n",i);가 한번 실행되고 반복문이 종료되는 것을 보실수 있습니다.

continue와 마찬가지로 중첩된 루프안에 break문이 있을경우 break문을 포함하고 있는 루프만 영향을 받습니다. 또한 break문은 루프를 바로 벗어나므로 for문 같은 곳에 사용할 경우 루프 제어부의 갱신부분도 건너뛰게 됩니다.

댓글()