C 언어 | 흐름 제어 | do~while문


문장을 반복 여부의 판단을 반복할 문장을 실행한 후에 실시하는 do 문장에 대해 설명한다. do 문은 while 문과는 다르게 조건에 관계없이 반드시 1번은 문장을 실행한다.

지연 판단형의 반복 처리

while는 반복할 문장을 실행하기 전에, 조건식을 판단하여 반복 처리를 계속할지 여부를 결정한다. 그러나 이와는 반대로 문장을 실행한 후에 조건식을 판단하는 do 문장이라는 것도 있다.

do 문

do 문장 while (조건식);

반복 처리의 대상이 되는 문장을 먼저 실행하는 것을 제외하고는 while 문과 기본적으로 동일하다. while 문은 식을 판단하고 루프를 실행하기 때문에, 최초에 판단이 거짓이면 문장을 한번도 실행하지 않고 그냥 지나쳐 버린다. 비록 판단을 해서 어떤 결과이든 최소한 한번은 실행될 경우에 do 문은 위력을 발휘된다.

코드1

#include <stdio.h>

int main()
{
  int iCount = 1 , iMax;
  printf("반복 횟수를 입력하십시오. >");
 scanf("%d" , &iMax);

  do {
    printf("%d번째 루프입니다.\n" , iCount++);
  } while (iCount <= iMax);
 return 0;
}

코드1은 첫번째 반복할 횟수를 입력하고 지정된 값을 바탕으로 do 문으로 문장으로 반복한다. 하지만 while 문과 크게 다른 점은 iCount <= iMax가 성립하지 않고(거짓이라고 해도) 반드시 한번은 문을 실행하는 것이다. 입력된 값이 음수나 0이었다해도, do는 반드시 문장을 한 번 실행한다. 이 식의 판단이 문을 실행한 후에 이루어지고 있기 때문이다.

그러나 상당히 특별한 경우가 아닌 한 do 문장을 사용하지 않는다. 필자의 경험으로는 수만 행에 이르는 애플리케이션 시스템을 설계했을 때도 적극적인 사용 의사가 없으면 do 문장을 사용하는 필요에 직면한 적은 없었다. 하지만 다른 사람이 작성한 소스를 읽을 때에 do 문장이 나오는 것은 충분히 생각할 수 있으며, 알고리즘에 따라 do 문을 사용하는 것이 스마트하게 쓸 수 있다는 경우도 있기 때문에 기억할 둘 필요가 있다.