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가 맞을겁니다.
댓글