Skip to content

25. break와 continue


1. 키워드

  • break
  • continue


2. break, continue로 반복문 제어하기

  • breakfor, while, do while, switch 문법에서 제어흐름을 벗어나기 위해 사용한다.


  • switch를 예로 들면 다음과 같다.


001


  • continuebreak와 비슷하지만 약간 다른 점이 있다.
  • break는 제어흐름을 중단하고 빠져 나오지만 continue는 제어흐름을 유지한 상태에서 코드의 실행만 건너뛰는 역할을 한다.


3. break로 반복문 끝내기

  • 먼저 무한 루프에서 숫자를 증가시키다가 100이 나오면 반복문을 끝내도록 만들어보자.


#include <stdio.h>

int main()
{
    int num1 = 0;

    while (1) // 무한 루프
    {
        num1++; // num1을 1씩 증가시킴

        printf("%d\n", num1);

        if (num1 == 100) // num1이 100일 때
            break;       // 반복문을 끝냄. while의 제어흐름을 벗어남
    }

    return 0;
}

// ... (생략)
// 96
// 97
// 98
// 99
// 100


  • while1을 지정하여 무한 루프를 만들고 그 안에서 num11씩 증가시키고 if를 이용하여 num1100이 될 때 break를 실행한다.
  • 이렇게 하면 무한 루프라도 1부터 100까지만 화면에 출력한다.
  • 즉, 반복문 안에서 break를 실행하면 반복문은 바로 끝난다.


  • while(do while)뿐만 아니라 for에서도 break의 동작은 같다.


#include <stdio.h>

int main()
{
    int num1 = 0;

    for (;;) // 무한 루프
    {
        num1++; // num1을 1씩 증가시킴

        printf("%d\n", num1);

        if (num1 == 100) // num1이 100일 때
            break;       // 반복문을 끝냄. for의 제어흐름을 벗어남
    }

    return 0;
}

// ... (생략)
// 96
// 97
// 98
// 99
// 100


  • 여기서는 무한 루프를 예로 들었지만 반복 횟수가 정해져 있더라도 break를 사용하면 반복문은 바로 끝난다.


  • 다음은 반복문과 break의 동작을 나타낸 순서도이다.


002


4. continue로 코드 실행 건너뛰기

  • 이번에는 continue를 사용하여 일부 코드를 실행하지 않고 건너뛰어 보자.


#include <stdio.h>

int main()
{
    for (int i = 1; i <= 100; i++) // 1부터 100까지 증가하면서 100번 반복
    {
        if (i % 2 != 0) // i를 2로 나누었을 때 나머지가 0이 아니면 홀수
            continue;   // 아래 코드를 실행하지 않고 건너뜀

        printf("%d\n", i);
    }

    return 0;
}

// ... (생략)
// 92
// 94
// 96
// 98
// 100


  • for를 사용하여 1부터 100까지 반복한다.
  • 그리고 if를 사용하여 i가 홀수이면 continue를 실행한다.
  • 마지막으로 printf를 사용하여 i의 값을 출력한다.
  • i가 짝수이면 printf가 실행되어 숫자가 출력되고, 홀수이면 continue가 실행되어 printf를 실행하지 않는다.
  • 즉, 반복문 안에서 continue를 실행하면 continue 아래의 코드는 실행하지 않고 건너뛴 다음 반복을 시작한다.


  • for뿐만 아니라 while(do while)에서도 continue의 동작은 같다.


#include <stdio.h>

int main()
{
    int i = 1;
    while (i <= 100) // i가 100보다 작거나 같을 때 반복. 1부터 100까지 증가하면서 100번 반복
    {
        i++;            // i를 1씩 증가시킴
        if (i % 2 != 0) // i를 2로 나누었을 때 나머지가 0이 아니면 홀수
            continue;   // 아래 코드를 실행하지 않고 건너뜀

        printf("%d\n", i);
    }

    return 0;
}

// ... (생략)
// 92
// 94
// 96
// 98
// 100


  • 여기서는 반복 횟수를 정한 뒤 continue를 사용했지만 무한 루프에서 continue를 사용하면 짝수만 계속 출력될 뿐 반복문은 끝나지 않는다.


  • 다음은 반복문과 continue의 동작을 나타낸 순서도이다.


003


5. 입력한 횟수대로 반복하기

  • 이번에는 입력한 횟수대로 반복을 해보자.


#define _CRT_SECURE_NO_WARNINGS // scanf 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>

int main()
{
    int count;

    scanf("%d", &count); // 값을 입력받음

    int i = 1;
    while (1) // 무한 루프
    {
        printf("%d\n", i);

        if (i == count) // i가 입력받은 값과 같을 때
            break;      // 반복문을 끝냄

        i++;
    }

    return 0;
}

// 5 (입력)
// 1
// 2
// 3
// 4
// 5


  • scanf 함수로 입력 값을 받아서 count 변수에 저장했다.
  • 그리고 while1을 지정하여 무한 루프로 만든 뒤 반복문 안에서는 i의 값을 출력하고, icount의 값과 같으면 break를 실행한다.
  • 마지막으로 i1씩 증가시킨다.
  • 여기서는 5를 입력했으므로 1부터 5까지 출력된 뒤 i의 값과 count의 값이 같으므로 반복문이 끝난다.


6. 입력한 숫자까지 짝수 출력하기

  • 이번에는 입력한 숫자까지 해당하는 짝수를 출력해 보자.


#define _CRT_SECURE_NO_WARNINGS // scanf 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>

int main()
{
    int count;

    scanf("%d", &count); // 값을 입력받음

    for (int i = 1; i <= count; i++) // 1부터 증가하면서 count보다 작거나 같을 때까지 반복
    {
        if (i % 2 != 0) // i를 2로 나누었을 때 나머지가 0이 아니면 홀수
            continue;   // 아래 코드를 실행하지 않고 건너뜀

        printf("%d\n", i);
    }

    return 0;
}

// 10 (입력)
// 2
// 4
// 6
// 8
// 10


  • scanf 함수로 입력 값을 받아서 count 변수에 저장했다.
  • 그리고 for의 조건식에 i <= count처럼 지정하여 count에 들어있는 값만큼 반복하도록 했다.
  • 반복문 안에서는 if를 사용하여 i가 홀수이면 continue를 실행한다.
  • 마지막으로 printf를 사용하여 i의 값을 출력한다.
  • 여기서는 10을 입력했으므로 1부터 10까지 반복하면서 i가 홀수이면 printf를 실행하지 않고 건너뛰며 i가 짝수이면 printf를 사용하여 숫자를 출력한다.
  • 따라서 2 4 6 8 10이 출력된다.

References