개발/C

[C언어] 반복문 (while, do, for)

섭교수 2022. 5. 5. 08:00
반응형

#C언어

반복문은 loop 와 loop body (repetiion body)로 이루어져있습니다.

세 가지 반복문 while, do, for 의 기본형식과 차이점을 알아봅시다.

1. While statement

while 반복문의 기본 형식은 다음과 같습니다.

 

while ( 반복조건 ) {

    loopbody 

}

 

 

반복조건이 참(논리값이 1)일 때 반복하며 거짓(논리값이 0)이 되면 반복을 멈춥니다.

반복조건을 검사 -> 참이면 실행 -> 다시 돌아가서 반복조건 검사 하는 형식

 

만약 무한 루프를 만들고 싶다면 while (1) 을 입력하면 됩니다.

 

 

 

 

2. Do statement

do 반복문의 기본 형식은 다음과 같습니다.

 

do {

    loopbody

} while ( 반복조건 );

 

 

 

while 문과 다른 점이 있는데 일단 실행을 먼저 하고 나서 반복조건이 적용된다는 것입니다.

실행 -> 반복조건 검사 -> 참이면 반복, 거짓이면 다음 코드 실행

 

 

3. For statement

for 문은 "counting" variable 을 가진 반복문에 적합합니다.

이를테면 팩토리얼을 계산한다던지 :)

for 반복문의 기본형식은 다음과 같이 loopbody 이전 세 개(이하)의 expression을 가집니다.

 

for ( 초기선언; 반복조건 검사; 반복시 변수의 증감 ) {

    loopbody 

}

 

금 복잡해 보이는데 예시문은 다음과 같습니다.

 

for (i = 10; i > 0; i--){

printf("now i is %d and 10 - i is %d\n", i, 10-i);

}

 

위 for 문의 작동과정을 분석해보면

1. for 문으로 들어와서 초기선언 i = 10 을 실행 (보통 변수를 초기화 하는데 사용됩니다)

2. 반복조건 검사 후 true 면 loopbody 실행

3. loopbody 실행 후 돌아와서 i-- 실행. 현재 i = 9 인 상태

4. 반복조건 검사 : i = 9 이므로 i > 0 은 true. 다시 i = 9 인 채로 loopbody 실행

 

즉 for (expr1; expr2; expr3) 구조에서 expr1 -> expr 2 -> [ loopbody -> expr3 -> expr 2-> ] loopbody -> . . .

위에서 빨간색 칠한 부분이 반복됩니다. 만약 expr 2 가 false라면 반복문을 빠져나오고 다음 코드를 실행합니다.

 

expr 1,2,3 모두 필수적인 건 아닙니다.

expr 1(초기선언)이 없다면 초기선언(변수의 초기화) 없이 바로 반복조건 검사 후 loopbody를 실행합니다.

expr 3(변수의 증감)를 생략한다면 loopbody 내에서 변수를 바꿔주지 않는 이상 무한루프문이 됩니다.

주의할 점은 생략하더라도 괄호 내부에 세미 콜론 2 개는 꼭 넣어줘야 한다는 점입니다.

예시구문>

 

int i =10 ;

int main() {
	for (; i > 0;) {

		printf("i is now %d\n", i--);
	}
	return 0;
}

 

실행화면>

printf 안에 i--가 없으면 무한루프가 됩니다.

※i--는 현재 i를 넣고 1을 빼는 연산자고 --i은 1을 먼저 빼고 i를 대입하는 연산자입니다.

 

가장 간단한 for 문 무한루프는 for (;;)입니다. 반복조건이 없으면 loopbody로 바로 넘어가서 실행합니다.

반응형