while과 do ~ while

for 말고도 반복문을 만들 수 있는 수단이 존재하는데요, 바로 whiledo ~ while입니다.

while(조건식) { 내용 }의 형식으로 while문을 만들 수 있으며, 이는 조건식이 참인 동안 괄호 안의 내용을 실행합니다. 조건식은 처음 시작하자마자 평가됩니다.

#include <stdio.h>
int main() {
      int i = 0;
      while(i < 5)
            printf("%d\n", i++);
      return 0;
}

0

1

2

3

4

do { 내용 } while(조건식)의 형식으로 do ~ while 문을 만들 수 있으며, 이는 조건식이 참인 동안 괄호 안의 내용을 실행합니다. while과의 차이점은 일단 한 바퀴 실행된다는 것입니다.

#include <stdio.h>
int main() {
      int i = 0;
      do
            printf("%d\n", i++);
      while(i < 5);
      return 0;
}

0

1

2

3

4

이 코드에서는 같은 역할을 하는 것처럼 보입니다. 다른 코드는 어떨까요?

#include <stdio.h>
int main() {
      int i = 0;
      while(i)
            printf("퉤에에엣\n");
      return 0;
}


#include <stdio.h>
int main() {
      int i = 0;
      do
            printf("퉤에에엣\n");
      while(i);
      return 0;
}

퉤에에엣

첫 번째 코드에서는 아무 것도 실행되지 않지만, 두 번째 코드에서는 퉤에에엣이 출력되는 모습을 볼 수 있습니다. goto와 레이블을 사용한 코드로 바꾸어서 생각해 보면 더 쉽게 이해할 수 있을 것입니다.