본문 바로가기
프로그래밍 언어/C 언어

[C/C++] do-while 문 형태와 활용

by 까망 하르방 2021. 11. 22.
반응형

do-while문은 안에 있는 코드를 조건식과 상관없이 한 번 무조건 실행됩니다.

그 후에 조건식을 확인하고 반복 여부가 결정된다.


그렇기에 아래 코드는 i < 0 이지만 한 번 printf 가 실행되고

조건문에 걸려 반복문을 빠져나오게 된다.

#include <stdio.h>

int main()
{
    int i = 0;

    do
    {
        printf("안녕 세상아 [%d]\n", i);
        i++;
    } while (i < 0);
}

중괄호 안에서 변화식을 조건문에 맞춰서 작성하지 않으면

반복이 끝나지 않고 무한 루프 되므로 주의!

 

위 코드를 while 문으로 변경한다면 아래와 같다.

물론 반복문 자체가 실행되기 위해서는 조건문 수정이 필요하다. 😒

#include <stdio.h>

int main()
{
    int i = 0;

    printf("안녕 세상아 [%d]\n", i);
   
    while (i < 0)
    {
        printf("안녕 세상아 [%d]\n", i);
        i++;
    }
}

 

활용

Q) 그렇다면 do-while문은 어떻게 활용할 수 있을까?

ex) 1~9 사이의 랜덤한 숫자를 사용하고 싶다.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int mode = (rand() % 9) + 1;
    printf("mode = %d\n", mode);
}

 

(rand() % 9) + 1 와 같이 나머지 연산(%)을 이용할 수도 있지만,,

아래와 같이 구현도 가능한 것이다.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int mode;
    do
    {
        mode = rand() % 10;
    } while (mode == 0);
    printf("mode = %d\n", mode);
}

mode 값을 랜덤하게 하되 0 으로 초기화된 경우에는

아닐 때까지 다시 랜덤하게 초기화하는 것이다.

반응형

'프로그래밍 언어 > C 언어' 카테고리의 다른 글

[C/C++] memmove() 함수 사용과 예제  (0) 2021.11.28
[C/C++] memcpy 사용 방법  (0) 2021.11.24
[C] printf 서식  (0) 2021.09.14
[C/C++] memset 사용시 주의사항  (0) 2021.09.11
[C / C++] memset 함수 사용  (0) 2021.09.11

댓글