본문 바로가기
Coding/C

C언어 - while 반복문

by ZaRi 2023. 5. 10.

 

 조건문에 이어서 반복문에 대해 알아보겠습니다. 

 C언어에서 반복문은 크게 while문 for문이 있습니다. 아마 두 개 다 파이썬에서도 들어보셨을 것입니다.

 


 

while 반복문

 while 반복문의 경우 형태는 다음과 같습니다.

 

 

형태 설명
A;

while (B)
{
    종속문장;
    C;
}
A: 초기식
B: 조건식
C: 변화식

초기식을 가지고 조건식을 비교하고 맞으면 종속절 실행 그리고 변화식을 거쳐 다시 조건식과 비교한다.

순서
A -> B -> 참 -> 종속절, C
-> B -> 참 -> 종속절, C
-> B -> 참 -> 종속절, C
......
-> B -> 거짓 -> while문 나옴.
ex)
int i = 0;
while (i<5)
{
    printf("i 값: %d \n", i);
    i++;
예시
while (1)
{
    종속문장;
}
이 경우 무한 루프가 일어남.

 

 

 한번 저 예시문장을 실행해서 보여드리겠습니다.

 

 

 

#include <stdio.h>

int main()
{
    int i = 0;
    while (i < 5)
    {
        printf("i 값: %d \n", i);
        i++;
    }

	return 0;
}

 

 위 코드를 가져와서 실행하면.

 

 

 

i-값이-0~4까지-출력됨
i-값

 

 i의 값이 0부터 1씩증가하면서 4가 출력되었습니다.

 5가 되었을때 조건식 i > 5 가 거짓이 되어, 출력되지 않고 반복문이 빠져나온 모습입니다.

 

 그럼 이제 기본 예시를 알아보았으니, 좀 더 활용해보겠습니다.

 

 

 

while문 활용하기

 먼저 기본적인 while 문을 활용해보겠습니다.

 살면서 그런일은 없겠지만 코인이 복사가 된다고 생각해봅시다.

 

 그렇게 가정을 하고 코인이 두배씩 매 회마다 복사가 되게 만들고 그 값이 1000이상이 넘어가면 반복문을 빠져 나오게 만들어보겠습니다.

 

 

 

#include <stdio.h>

int main()
{
    int ETH = 1;

    while (ETH < 1000)
    {
        printf("아니 코인이 복사가 된다니까??\n");
        printf("현재 코인: %d\n", ETH);
        ETH *= 2;
    }
    printf("\n이제 끝 과도한 욕심을 부리지 말자!!\n");
    return 0;
}

 

 코드를 다 짜봤습니다. 진짜 저렇게 코인이 복사가 되면 행복할 것 같습니다.

 이제 실행을 해보겠습니다.

 

 

 

코인이-2배씩-복사가-된다고-출력하다가-마지막에-이제-끝-과도한-욕심을-부리지-말자!!가-출력됨
코인-복사

 

 이렇게 수가 512까지 출력되고, 1024는 1000보다 크기에 출력되지 않고 반복문을 빠져나와.

 마지막 문장이 출력되는 것을 확인 할 수 있습니다.

 

 

 

while 무한 반복문

이제 그럼 위에 반복문을 무한 반복하게 해보겠습니다.

코드는 다음과 같습니다.

 

 

 

#include <stdio.h>

int main()
{
    int ETH = 1;

    while (1)
    {
        printf("아니 코인이 복사가 된다니까??\n");
        printf("현재 코인: %d\n", ETH);
        ETH *= 2;
    }
    printf("\n이제 끝 과도한 욕심을 부리지 말자!!\n");
    return 0;
}

 

 while 조건식에 1(참)을 주어 조건식이 항상 옳게 만들었습니다.

 이제 실행해보겠습니다.

 

 

 

현재코인과-코인이-복사된-다는-말이-무한-반복됨
코인-무한-복사

 

 이렇게 되면 코인이 무한 복사되면서 프로그램이 계속 실행됩니다.

(아마 수가 엄청 커져서 int 자료형(4byte)가 다 담아낼 수 없을 만틈 커져서 0이 출력되는 것 같습니다.)

 

 

 


 

 while문에 대해 알아보았습니다. 이제 for문을 배우기 전에 do while 문에 대해 알아보겠습니다.

댓글