본문 바로가기

C 언어/임베디드 C

while문의 무한반복

무한반복이란 while문의 조건식이 잘못 설정되어 while문이 끝없이 반복수행되는 것을 말한다.

/*1에서부터 키보드로부터 입력받은 정수 count까지의 합을 구하는 프로그램. 입력값이 음수일 경우 무한반복이 일어난다.*/

#include <stdio.h>

int main()
{
 int count;
 long sum = 0;

 printf("Please enter an integer: ");
 scanf("%d", &count);
 while(count !=0)
 {
  sum = sum + count;
  count = count - 1;
 }
 printf("The sum is %d.\n", sum);
 return 0;
}

결과
Please enter an integer: 5
The sum is 15.

음수로 입력했을 경우
Please enter an integer: -1
_ <--커서(정지상태,입력불가)

이프로그램을 실행할 때 입력변수 count의 값으로 양의 정수나 0을 입력하면 정상적으로 수행되지만, 음의 정수를 입력받았을 경우에는  count의 값이 결코 0이 될수 없기 때문에 while문은 무한반복을 하게 된다. 이런 경우에는 화면이 정지된 상태처럼 보이기 때문에 프로그램의 실행이 어떻게 진행되고 있는지 알 수 없다. 이럴 때 프로그램의 실행을 중단하기 위해서는 <ctrl+break>를 눌러야 한다. 이런 경우 프로그램의 오류를 찾기 위해서 while문을 다음과 같이 고쳐서 프로그램의 실행 과정을 볼 수 있다.

while(count !=0)
{
sum += count--;
printf("count : %dtsum : %ld\n", count, sum);
getch();           //<엔터 키>를 쳐서 while문을 반복시킨다.
}

프로그램을 실행시키면 무한 반복이 계속되지만 사용자는 출력을 보고서 오류수정의 단서를 찾을 수 있다.

'C 언어 > 임베디드 C' 카테고리의 다른 글

for문(2)  (0) 2011.04.11
for문(1)  (0) 2011.04.11
while문의 반복횟수  (0) 2011.04.07
while문이 한번도 실행되지 않는 경우  (0) 2011.04.07
while문(3)  (0) 2011.04.07