3.3 do while문

do while문 역시 조건식을 만족할 때까지 자신의 코드 블록을 반복하는 문법입니다. 그런데 조건을 만족하지 않아도 무조건 루프의 본문을 한 번은 실행합니다. 구조는 다음과 같습니다.

do
{
    // 본문
}
while(조건식);

조건식 : while문이 수행될 조건이 있는 곳입니다. 예를 들어 변수 i가 5보다 작은 동안만 수행하는 조건은 i < 5입니다.

for문을 사용해서 1씩 작아지는 변수가 0보다 클 때까지만 출력하는 예제를 만들어보겠습니다.

#include <stdio.h>

int main(void) {
	int i;
	i = 5;
	
	do
	{
		printf("i = %d\n", i);
		i--;
	}
	while(i > 0);
	
	return 0;
}

[출력]

i = 5
i = 4
i = 3
i = 2
i = 1

결과를 보니 while문과 다를 바가 없어보입니다.

학습하는 차원에서 초기화, 조건식, 증감식을 찾아보세요.

  • 초기화 : i = 0;
  • 조건식 : i > 0
  • 증감식 : i–;

그런데 위 예제에서 변수 i의 초깃값을 -1로 주면 어떻게 될까요?

do while문의 출력 결과는 다음과 같습니다.

[출력]

i = -1

하지만 while문 예제에서는 무엇도 출력하지 않습니다.

do while문의 흐름은 다음과 같습니다.

흐름

for문, while문, do while문에 대해 살펴봤습니다. 세 반복문 모두 기계어로 번역되었을 때 성능상 차이는 없습니다. 따라서 더 적합한 경우에 사용하면 됩니다.

for문은 명확하게 초기화와 반복식을 확인할 수 있습니다. while문은 초기화 변화가 없거나 반복식이 없을 때 더 적합합니다. do while 문은 무조건 한 번은 실행야 할 때 적합니다. 정리하면 다음과 같습니다.

for문 : 변수 초기화가 필요한 경우 while문 : 무한 반복을 하거나, 변수 초기화나 증감식이 불필요한 경우 do while문 : 반복 대상을 무조건 한 번은 수행해야 하는 경우