dnjsanr7246   2년 전

이렇게 코드를 작성해서 맞았다고 떴습니다. 근데 이 코드 그대로 Dev C++에서 돌려보면, a,b에 올바른 값이 오지 않을때 프로그램이 끝나는 것이 아니라, 그 전 입력 값으로(밑에 예시참고) 무한루프 돌면서 출력이 되는데 무엇 때문인지 모르겠습니다...ㅠㅠ

입력   출력

1 3  ->  4 

2 -4 -> -2

d k  -> -2-2-2-2-2-2-2-2-2-2-2-2-2...........무한루프

dldyddlwl   2년 전

스택오버플로우에도 비슷한 질문이 있길래 가져와 봤습니다

When scanf fails, it does not remove the character from input buffer (It does remove data from buffer when it succeeds). So, the next time scanf is triggered in the loop, it will not wait for user input at all (since it has an unread character in its buffer). But it fails again, and again (since everytime it fails) and hence will go into an infinite loop.

그러니까, scanf가 받아들이는 것을 실패하면(정수형을 받는데 문자가 들어오면), 입력버퍼에서 그 캐릭터(문자)를 지우지 않고 계속 가지고 있기 때문에, 유저 입력을 받지 못하고 무한루프를 돌게 된다고 하네요.

댓글을 작성하려면 로그인해야 합니다.