29.1 do while 반복문 사용하기

먼저 do while을 사용하여 "Hello, world!"를 100번 출력해보겠습니다.

do_while_0_to_99.c

#include <stdio.h>

int main()
{
    int i = 0;

    do     // 처음 한 번은 아래 코드가 실행됨
    {
        printf("Hello, world! %d\n", i);    // Hello, world!와 i의 값을 함께 출력
        i++;                                // i를 1씩 증가시킴
    } while (i < 100);    // i가 100보다 작을 때 반복. 0부터 99까지 증가하면서 100번 반복

    return 0;
}

실행 결과

Hello, world! 0
Hello, world! 1
... (생략)
Hello, world! 97
Hello, world! 98
Hello, world! 99

먼저 반복문에 사용할 변수를 선언한 뒤 0으로 초기화합니다. 그리고 do 아래에 중괄호를 열고 반복할 코드와 변화식을 넣습니다. 마지막으로 중괄호를 닫은 뒤 while에 조건식을 지정하고 세미콜론을 붙여주면 됩니다.

그림 29‑2 do while 반복문의 기본 형태

do 다음에 오는 코드는 조건식과 상관없이 무조건 한 번은 실행됩니다. 따라서 printf가 한 번 실행되고, i++도 실행되어 i가 1 증가합니다. 이 상태로 조건식에서 i가 100보다 작은지 검사하게 됩니다. 아직은 i가 100보다 작으므로 계속 반복하다가 i가 100이 되면 i < 100은 거짓이 되므로 반복을 끝냅니다.

do while 반복문도 반드시 { } (중괄호) 안에 변화식을 지정해야 합니다. 만약 조건식만 지정하고 중괄호 안에서 변화식을 생략하면 반복이 끝나지 않고 계속 실행(무한 루프)되므로 주의해야 합니다.

do whilewhile로만 표현하면 다음과 같습니다.

while.c

#include <stdio.h>

int main()
{
    int i = 0;

    // do에 해당하는 부분
    printf("Hello, world! %d\n", i);    // 처음 한 번은 실행
    i++;                                // 처음 한 번은 실행

    while (i < 100)    // i가 100보다 작을 때 반복. 0부터 99까지 증가하면서 100번 반복
    {
        printf("Hello, world! %d\n", i);    // Hello, world!와 i의 값을 함께 출력
        i++;                                // i를 1씩 증가시킴
    }

    return 0;
}

실행 결과

Hello, world! 0
Hello, world! 1
... (생략)
Hello, world! 97
Hello, world! 98
Hello, world! 99

while 반복문을 실행하기 전에 printf로 문자열을 출력하고 i++i를 1 증가시켰습니다. 이 부분은 do while에서 처음 한 번은 조건문과 상관없이 실행되는 점과 같습니다. 이처럼 do while은 처음 한 번은 실행해야 하며 그 이후에는 조건에 따라 반복해야 하는 코드를 간단하게 표현할 수 있습니다.