[C언어] 반복문 for문 루프, for문 콤마(,)연산
이번 포스팅은 반복문인 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문과 같이 무한으로 반복하게 됩니다. 그렇기 때문에 생략하더라도 루프를 끝내는 문장이 루프 안에 들어있어야 합니다.
'ET의 공부 > C언어' 카테고리의 다른 글
[C언어] do while 문 (0) | 2019.12.11 |
---|---|
[C언어] 무한반복 while문 (0) | 2019.12.11 |
[C언어] 대입연산자 +=, -=, *= , /=, %= (0) | 2019.12.04 |
[C언어] 데이터형 바꾸기 캐스트 연산자 (0) | 2019.12.03 |
[C언어] 증가연산자 ++ 와 감소 연산자 -- , 증감연산자 사용방법 (0) | 2019.12.03 |