C언어 반복문에서 for
반복문은 초깃값, 조건식, 증감문으로 구성됩니다. while
반복문은 for
반복문에서 초깃값과 증감문이 밖으로 나온 형태와 비슷합니다. do while
반복문은 코드 블록을 1회 강제 실행할 때 사용합니다.
C언어 반복문이 필요한 이유
C언어에서 0
부터 시작해서 100
까지의 숫자를 출력하려면 printf()
로 작성된 101줄의 코드가 필요합니다.
#include<stdio.h>
void main() {
int i;
printf("%d \n", 0);
printf("%d \n", 1);
//...중략
printf("%d \n", 99);
printf("%d \n", 100);
}
반복문을 사용하면 같은 결과의 출력물을 3줄 이내의 코드로 작성할 수 있습니다.
#include<stdio.h>
void main()
{
int i;
for (i = 0; i <= 100; i++)
{
printf("%d \n", i);
}
}
결과
0
1
2
...중략
99
100
C언어 반복문의 종류
C언어 반복문의 종류에는 for
문, while
문, do while
문이 있습니다. 반복문은 서로 전환이 가능합니다.
기호 | 형태 | 의미 |
---|---|---|
for | for (초깃값; 조건식; 증감문) | 조건식이 거짓이 될 때 까지 반복 |
while | while (조건식) | 조건식이 거짓이 될 때 까지 반복 |
do while | do {실행문} while (조건식) | 실행을 선 1회 하고, 조건식 검사로 반복 체크 |
for 반복문
C언어 for
반복문은 선언한 변수(i
)에 초깃값을 대입해서 조건식이 거짓이 나올 때 까지 코드 블록 { }
사이의 실행 코드를 반복합니다. 반복이 가능한 이유는 조건식을 검사한 다음에 i++
또는 i--
등의 증감식에 의해서 변수가 자동으로 변하기 때문입니다.
#include<stdio.h>
void main()
{
변수 = i;
for (i = 초깃값; i < 조건식; i++ 증감문)
{
실행 코드;
}
}
숫자 0
부터 9
까지를 한 줄씩 나열하고 싶은 경우 먼저 변수를 적절히 선언하고, for
반복문의 괄호 안에 초깃값은 i = 0;
조건식은 i < 10;
그리고 증감 연산자는 i++
로 지정하면 됩니다. 증감 연산자 뒤에는 세미콜론 ;
이 없음을 유의합니다.
#include
void main()
{
int i; //정수형 자료형(int) 조건으로 변수 i를 생성합니다. 변수값은 비어있습니다.
for (i = 0; i < 10; i++)
{
printf("%d \n", i);
}
}
결과
0
1
2
3
4
5
6
7
8
9
for
반복문은 초깃값과 증감문을 괄호 밖으로 뺄 수도 있습니다. 이 경우 괄호 안의 세미 콜론은 남겨두어야 합니다. 그리고 증감 연산자의 경우 밖으로 나올 때 세미 콜론이 붙어야 합니다. 사실 코드를 줄이는 목적이 아니라면, 밖으로 뺀 구조가 좀 더 직관적으로 이해할 수 있습니다.
#include<stdio.h>
void main()
{
int i;
i = 0; //초깃값을 밖으로 뺍니다.
for ( ; i < 10 ; )
{
printf("%d \n", i);
i++; //증감 연산자는 조건식 밖으로 나올 때 세미콜론을 붙여줘야 합니다.
}
}
초깃값과 증가문 이외에 조건식마져 for ()
사이에서 제거하면 for ( ; ; )
형태의 세미 콜론만 남습니다. 상태를 무한 루프라고 하며, 조건식이 항상 참
이됩니다. 코드 블록 사이의 반복문이 강제 중지를 하기 전까지 무한 반복됩니다. 종료 하려면 visual studio를 기준으로 단축키 ctrl + c 를 누르거나 실행 상자를 마우스로 x
클릭해야합니다.
#include<stdio.h>
void main()
{
int i;
i = 0;
for ( ; ; )
{
printf("%d \n", i);
i++;
}
}
결과
실행 취소는 ctrl + c
0
1
2
...중략
888
889
....무한 증가
while 반복문
C언어 while
반복문은 for
반복문에서 초깃값과 증감문을 밖으로 뺀 구조와 거의 유사합니다. 차이점은 while()
괄호 사이에 세미콜론;
이 없다는 점입니다.
#include<stdio.h>
void.main()
{
변수 = i;
i = 초깃값;
while (i < 조건식)
{
실행 코드;
i++; // 증감 연산자
}
}
초깃값 0
부터 시작해서 조건식인 i
가 10
보다 클 때 까지 i++
로 1
씩 변수가 증가하면서 화면에 출력됩니다.
#include<stdio.h>
void main()
{
int i;
i = 0;
while ( i < 10)
{
printf("%d \n", i);
i++;
}
}
결과
0
1
2
3
4
5
6
7
8
9
while
반복문에서 while
을 for
로 교체하고, 조건식 앞 뒤에 세미콜론 ;
을 추가하면, for
반복문으로 전환할 수 있습니다.
#include<stdio.h>
void main()
{
int i;
i = 0; //초깃값
for ( ; i < 10 ; )
{
printf("%d \n", i);
i++; //증감문
}
}
초깃값(i = 0
)과 증감문(i++
)을 조건식(i < 10
) 앞 뒤에 삽입하면, 한 줄로 표현되는 전통적인 for
반복문의 구조와 같아집니다. 증감문은 괄호 안에 삽입시 뒤쪽 세미콜론 ;
이 사라짐을 유의합니다.
#include<stdio.h>
void main()
{
int i;
for (i = 0; i < 10 ; i++)
{
printf("%d \n", i);
}
}
while
반복문은 조건식에 1
을 삽입하면, for
반복문 처럼 무한 루프를 만들 수 있습니다. 1
은 참
이므로 while(무한 참)
을 의미합니다.
#include<stdio.h>
void main()
{
int i;
i = 0;
while ( 1 )
{
printf("%d \n", i);
i++;
}
}
결과
실행 취소는 ctrl + c
0
1
2
...중략
888
889
....무한 증가
do while 반복문
C언어 do while
반복문은 while
반복문과 구성은 동일합니다. 차이점은 코드 블록 { }
사이의 반복 실행될 코드가 while (조건식)
보다 앞에 위치합니다.
#include<stdio.h>
void main()
{
int i;
do
{
반복할 코드;
}
while ( 조건식 );
}
반복할 코드 블록이 do
와 함께 앞으로 나오는 대신 while (조건식);
뒤에는 세미콜론이 붙어야 합니다.
#include<stdio.h>
void main()
{
int i;
i = 10;
do
{
printf("%d \n", i);
i++;
}
while (i < 10);
}
결과
i
는 10
이지만, i
를 인쇄하라는 명령어가 while(i < 10
)이라는 조건식 보다 앞에 나와있습니다. 따라서 조건식과 무관하게 i = 10
이 1회는 출력됩니다. do while
반복문은 초깃값이 조건식을 만족하지 않아도 1회는 강제 실행됩니다.
10
같은 조건이지만 while
반복문으로 변경되면, 초깃값이 조건식을 만족하지 않을 경우 아무런 결과가 반환되지 않습니다.
#include<stdio.h>
void main()
{
int i;
i = 10;
while (i < 10)
{
printf("%d \n", i);
i++;
}
}
결과
값없음
조건식의 참/거짓과 무관하게 강제 1회 반복을 하려면 do while
을 사용합니다. 반드시 조건식의 필터링을 거쳐야 한다면, while
또는 for
반복문을 사용합니다.