[C언어] 반복문 for문 루프, for문 콤마(,)연산

ET의 공부/C언어|2019. 12. 10. 22:08

이번 포스팅은 반복문인 for 루프를 제어하는 법에 대해 포스팅하겠습니다. 읽어주셔서 감사합니다.

 

 

1. for 문의 동작

 

for 루프는 for문을 제어하는 3가지 동작(초기화, 검사, 갱신)으로 동작합니다.

 

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main (void)
{
    
    for(int i = 0; i<=10; i++){
        printf("%d\n",i);
    }
    return 0;
}

 

6번째 코드인 for(int i = 0; i <=10;<=10 i++)를 보시면 괄호 안에 두 개의 ;(세미클론)으로 구분된 3개의 표현식을 확인하실 수 있습니다.

 

첫 번째는 초기화로 for문이 처음 실행될 때 한 번만 수행됩니다.

두 번째는 검사 조건으로 for문이 매 실행되기 전 검사를 수행합니다.

세 번째는 변경 혹은 갱신으로 루프의 끝에서 수행됩니다.

 

위의 예제를 보시면 int i = 0 로 i는 0으로 초기화되었고 두 번째로 i <=10로 i 가 10보다 크거나 작은지 검사합니다.

그 후 for문 안에 i를 출력하는 printf("% d\n", i)로 i를 출력한 후 세 번째 변경으로 i++ 즉 i를 1 증가해줍니다.

 

 

for( 초기화; 검사; 갱신;)

 

for 루프는 검사 부분이 거짓 또는 0 이 될 때까지 반복하게 됩니다.

 

 

 

2. for문의 콤마(,) 연산

 

for 문에서 콤마(,)연산자는 for 루프에 하나 이상의 초기화 또는 갱신을 포함시킬 수 있게 해 줍니다.

 

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main (void)
{
    
    for(int i = 0, j = 10; i<=10; i++,j*=2){
        printf("%d %d\n",i,j);
    }
    return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

이전 코드와 다른 점이 있다면 6번째 코드가 for(int i = 0, j = 10; i <=10;<=10 i++, j*=2)로++,j*=2

i를 증가시키는 동시에 j*=2로 j에 2를 곱해줍니다.

 

 

3.for문의 다양한 예제들

 

3.1 for문의 카운터는 증가뿐 아니라 감소도 가능하다. for문으로 감소시키기.

 

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main (void)
{
    
    for(int i = 10; i > 0; i--){
        printf("%d\n",i);
    }
    return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

결과

10

9

8

7

6

5

4

3

2

1

 

for(int i = 10; i > 0; i--)를 보시면 갱신 부분에 i-- 감소 연산자를 사용함으로써 역으로 카운트를 할 수 있습니다.

 

3.2 for문에서 1이 아닌 다른 수로 카운트 하기

 

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main (void)
{
    
    for(int i = 10; i < 100; i+=20){
        printf("%d\n",i);
    }
    return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

결과

10

30

50

70

90

 

for(int i = 10; i < 100; i+=20)에서+=20 i+=20를 사용함으로써 20씩 증가시키는 것을 보실 수 있습니다.

 

3.3 for문에서 숫자가 아닌 문자를 사용하기

 

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main (void)
{
    
    for(char c = 'a'; c <= 'z'; c++){
        printf("%c\n",c);
    }
    return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

출력

a

b

c

d

e

f

g

h

i

j

k

l

m

n

o

p

q

r

s

t

u

v

w

x

y

z

 

 for(char c = 'a'; c <= 'z'; c++) , for문에 char 데이터형을 사용하여 알파벳을 출력해보았습니다.( ascii 코드값이 a는 97, b는 98.... z는 122)

 

 

3.4 for문에서 기하급수 사용하기, for문으로 복리 계산하기

 

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main (void)
{
    printf("금리 1프로에서 200만원을 모을때까지 구하기\n");
    for(int money = 1000000 , i = 1 ; money <= 2000000; money*=1.01, i++){
        printf("%d년 차 %d 원\n",i,money);
    }
    return 0;
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

출력

금리 1프로에서 200만 원을 모을 때까지 구하기

1년 차 1000000 원

2년 차 1010000 원

3년 차 1020100 원

4년 차 1030301 원

5년 차 1040604 원

.

.

.

67년 차 1928418 원

68년 차 1947702 원

69년 차 1967179 원

70년 차 1986850 원

 

ㅇㅇㅇㅇㅇ70년은 넘게 모아야 하네요. 씁쓸합니다.

 

 

3.5 for문의 표현식 비워놓기, for(;;)

 

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main (void)
{
 
    for(;;){
        printf("loop\n");
    }
    return 0;
}
 

 

표현식을 사용하지 않아도 for문을 사용할 수 있습니다.(하지만 세미클론 ;은 생략할 수 없습니다.)

for(;;)를 사용하게 되면 while문과 같이 무한으로 반복하게 됩니다. 그렇기 때문에 생략하더라도 루프를 끝내는 문장이 루프 안에 들어있어야 합니다.

 

댓글()