C언어 반복문,do~while문에 대해

프로그래밍/C 2018.09.13 댓글 Plorence
while문과 do~while문의 차이점은 크게 없지만 차이점이라면 반복의 조건을 검사하는 시점입니다
while문은 조건을 검사하고 그게 참이면 실행이지만
do~while문은 일단 조건은 나중에따지고 먼저 코드실행후 조건을검사합니다.
정리하자면
while문은 조건검사 코드실행
do~while문은 코드실행 조건검사
do~while문

do~while문은 앞서 설명드렸지만 선코드실행 후조건검사의 반복문입니다.
먼저 코드를 실행한후 계속 반복할것인지 안할것인지 조건검사를합니다. 조건이 거짓이라면 반복문을 탈출합니다.

제가 이렇게 텍스트로 설명하는거보다 예제를 통해서 설명하는것이 이히에 더 도움될것같네요.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int main(void)
{
    int num1 = 0;
    int num2 = 0;
    do
    {
        printf("hello world \n");
        num1++;
     } while(num1 < 3);
     
     while(num2 < 3){
         printf("hello world \n");
        num2++;
     }
}

예제코드

각각 while문과 do~while문을 이용하여 반복문 1개당 3개의 "hello world"를 출력한다고 해봅시다.
언틋 모습은 비슷합니다.
결과는 역시나 hello world 라는 문자열이 6번 출력됩니다.
1
2
3
4
5
6
hello world
hello world
hello world
hello world
hello world
hello world
출력결과
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
int main(void)
{
    int num1 = 0;
    int num2 = 0;
    do
    {
        printf("hello world \n");
        num1++;
     } while(num1 > 3);
     
     while(num2 > 3){
         printf("hello world \n");
        num2++;
     }
    return 0
}
예제코드

하지만 이예제는 다릅니다.(뭐가 바뀌었냐면 조건문의 조건이 바뀌었습니다. num1 < 3 에서 num > 3 즉,0이 3보다 클때)
아까도 말햇듯이 do~while문은 선코드실행 후조건검사입니다.
그래서 먼저 hello world라는 문자열을 출력후에 조건검사 (0>3)는 거짓이기에 반복문을 탈출하였던거고
while문은 선조건검사이기 때문에 조건검사(0>3)는 거짓이기에 while문 아래에있는 코드를
실행안하고 건너뛴것입니다.

정리를 해드리자면 do~while문은 먼저 코드부터 실행한 후조건문검사합니다.
반면에 while는 조건문을 검사하고 코드를 실행합니다.(여기서 조건에 부합하지 않으면 코드실행을 안하겠죠.)

이와 같이 do~while는 반복영역이 한번이라도 실행되야 할때 사용됩니다.
do~while와 while중에 고르라면..

애초에 반복한다는 본질은 똑같지만,처음의 시작이 다르기 때문에 원하시는 코드의 흐름에 따라 선택하시면 됩니다.

각각 반복문의 의미에 따라 무조건 한번이라도 코드를 실행해야 한다면 대부분 do~while가 맞을겁니다.




댓글