상위 질문
타임라인
채팅
관점
무한 루프
컴퓨터에서 프로그램이 끝없이 동작하는 것 위키백과, 무료 백과사전
Remove ads

무한 루프(infinite loop)는 컴퓨터에서 프로그램이 끝없이 동작하는 것으로, 루프문에 종료 조건이 없거나, 종료 조건과 만날 수 없을 때 생긴다. 다중작업을 지원한 오래된 운영 체제는 한 프로그램의 무한루프에 전체 프로그램이 응답할 수 없게 만들었다.
의도하지 않은 무한 루프
실수를 하여 무한 루프가 생길 수 있다. 무한 루프가 생기는지를 확인하는 일반적인 방법은 존재하지 않는다(정지 문제).
사례
비주얼 베이직
dim x as integer
do until x > 5
x = 1
x = x + 1
loop
루프문 안에 x=1이 들어있기 때문에, x는 1로 재정의되어 다음 행에서 x=2가 된다. 따라서 조건문을 탈출할 수 없다. x=1을 루프 앞으로 끄집어 내어 해결할 수 있다.
C 언어
다음은 컴퓨터에서 변수가 기대하지 않은 성질을 가져서 무한 루프가 되는 사례이다.
float x = 0.1;
while (x != 1.1) {
printf("x = %f\n", x);
x = x + 0.1;
}
0.1이 10번 더해지면, 1.1이 되어야겠지만 실제로는 2진법 부동소수점으로 컴퓨터가 처리하므로 미세하게 다르기 때문에 무한루프가 된다. 이러한 문제는 x가 정해진 수와 같을 때 멈추는 조건을 부등호로 변경하여 해결할 수 있다.
Remove ads
같이 보기
외부 링크
- Make an infinite loop in several languages, on programming-idioms.org.
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads