반복문의 반복횟수를 판단하려면 while문의 경우 반복을 위한 변수와 반복 조건, 반복 조건을 거짓으로 만들기 위한 연산 등 최소 3문장을 파악해야 한다. 이 세 가지 요소를 한 데 묶어 반복 횟수의 판단이 쉬운 반복문이 for 문이다. 

반복문의 필수 요소 3가지는 반복을 위한 변수의 선언 및 초기화에 사용되는 초기식, 반복의 조건을 검사하는 목적으로 사용되는 조건식, 반복의 조건을 거짓으로 반드는 증가 및 감소 연산인 증감식이 있다. 그리고 for문을 사용하면 다음과 같은 형식이 된다.

for(초기식; 조건식; 증감식)
{
	// 반복할 코드
}

 

#include <stdio.h>

int main(void)
{
    int total = 0;
    int num;

    printf("0 to num add, What is num? ");
    scanf("%d", &num);

    for(int i = 0; i <= num; i++)
        total += i;
    
    printf("0 to %d add : %d\n", num, total);
    return 0;
}
/* output : 
0 to num add, What is num? 10
0 to 10 add : 55
*/

위 예제 코드는 0부터 입력한 값까지의 총 합을 더한 결과를 출력하는 코드이다.  원래는 for(int i = 0; 과 같이 for문 안에 초기식 변수를 선언하면 컴파일이 안됐으나 요즘은 for문 안에 변수 선언을 지원하는 컴파일러들이 많다. 

 

아래 코드와 같이 for문 중간의 조건식이 비워지면 무조건 참으로 인식하여 무한 루프가 형성된다.

for( ; ; )
{
}

 

for문도 while문과 do~while문과 마찬가지로 중첩 사용이 가능하다.

'Language > C, C++' 카테고리의 다른 글

[C] 조건 연산자(삼항 연산자)  (0) 2020.12.05
[C] 조건적 실행  (0) 2020.12.05
[C] do~while  (0) 2020.11.28
[C] while  (0) 2020.11.27
[C] 자료형 변환  (0) 2020.11.27

do~while문은 while문과 달리 반복 조건을 뒷부분에서 검사한다. 이 때문에 do~while문은 반복 영역을 최소한 한 번은 실행한다.

 

#include <stdio.h>

int main(void)
{
    int total = 0, num = 0;

    do
    {
        printf("input int(0 to quit) : ");
        scanf("%d", &num);
        total += num;
    } while (num != 0);
    printf("Total : %d\n", total);
    return 0;
}

위 코드는 반복해서 사용자 숫자입력을 받고, 입력받은 숫자가 0 이면 입력받은 숫자들의 합을 출력하는 코드이다. 위  코드와 같이 반복 영역을 최소한 한 번은 무조건 실행해야 하는 경우에는 do~while문을 사용하는 것이 적절하다. 

'Language > C, C++' 카테고리의 다른 글

[C] 조건적 실행  (0) 2020.12.05
[C] for  (0) 2020.11.29
[C] while  (0) 2020.11.27
[C] 자료형 변환  (0) 2020.11.27
[C] const  (0) 2020.11.25

프로그래밍을 할 때 반복적인 행위를 하는 코드의 양을 줄이고, 효율적으로 명령하기 위해서 반복문을 이용한다.

C에서는 크게 다음과 같이 3개의 반목문을 제공하고 있다. while문, do~while문, for문

 

whule문은 특정 조건을 주고 그 조건을 만족하는 동안 특정 영역을 계속 반복하는 구조이다.

#include <stdio.h>

int main(void){
    int num = 0;

    while (num<5)
    {
        printf("hello world %d \n", num);
        num ++;
    }
    return 0;    
}

위 코드를 보면 변수 num의 크기가 5보다 작을 때 까지 while 밑의 중괄호 안의 코드를 계속 반복 수행하도록 하는 코드이다. 만약 위 코드에서 num ++; 라는 코드가 없다면 반복의 조건이 무너지지 않아서 반복이 멈추지 않는 무한 루프 현상이 발생한다. 반복문의 구성에 있어서 중요한 것 중 하나는 반복의 조건을 무너뜨리기 위한 최소한의 연산이다.

 

반복의 대상이 다음과 같이 하나의 문장이라면 중괄호는 생략하고 들여쓰기 만으로 표현할 수 있다.

while(num<5)
	printf("hello world %d\n", num++);

 

while문에 처음 진입하면 반복의 조건인 비교 연산을 진행하고 참일 경우 반복 영역을 실행후 다시 반복 조건 검사하는 곳으로 돌아온다. 조건이 성립하지 않을 경우(비교 연산 진행 결과 거짓일 경우) 반복문을 종료한다.

 

while문은 조건이 거짓이 되면 반복문을 종료한다. 다음과 같이 조건을 항상 참으로 만들어주면 의도적으로 무한루프 반복문을 만들 수있다.

while(1)
{
	int num = 0;
	printf("%d\n", num);
    num ++
}

1은 참을 의미하는 대표적인 숫자이므로 반복문의 조건은 항상 참이 된다.

 

while문은 while문 안에 여러번 중첩하여 사용할 수 있다.

'Language > C, C++' 카테고리의 다른 글

[C] for  (0) 2020.11.29
[C] do~while  (0) 2020.11.28
[C] 자료형 변환  (0) 2020.11.27
[C] const  (0) 2020.11.25
[C] 문자 표현  (0) 2020.11.25

+ Recent posts