ladolcevxta   2년 전

결론적으로 정답이긴 하나, 의문이 드는 점이 있어 질문을 남깁니다. 

while문(Line 8)과 res 변수 선언(Line 7) 사이에, scanf("%d %d", &A, &B); 를 작성해야

A와 B에 값을 입력할 수 있고, 그렇게 하여 변수 A와 B에 값을 저장한 뒤 

그 후에 scanf 반환 값을 확인하여 while 조건문을 적용하는 것이 맞지 않나 라는 생각이 드는데, 

scanf("%d %d", &A, &B); 를 작성하지 않아도 입력할 수 있으며, 오히려 추가하면 오답 처리가 되는 듯 합니다.

혹시 왜 오답 처리가 나는 지 아시는 분 있으시다면, 조언을 주실 수 있을까요?

djm03178   2년 전

구체적으로 틀린 코드를 어떻게 작성하셨다는 건지를 봐야 알겠지만, 단순히 7~8번째 줄 사이에 scanf를 하나 추가하기만 한다면, 먼저 거기서 A와 B에 입력이 한 번 이루어지고 여기서 A와 B에 입력된 값과 리턴값 모두 그냥 버려지게 됩니다. 그 후 while 문의 조건문을 검사하기 위해 while문 안의 scanf가 다시 한 번 실행되며 A와 B에 입력을 받고, 그때의 리턴값부터 검사를 하면서 루프가 시작되겠죠.

djm03178   2년 전

틀린 코드가 왜 틀렸는지를 보는 것보다는 맞는 코드가 왜 맞는지를 이해시켜드리는 게 나을 것 같습니다.

while 문은 가장 먼저 조건문을 검사하고, 그 후 몸체가 실행되는 것을 반복합니다. 조건문을 검사한다는 건 그 조건문 안에 들어있는 내용을 실행을 한다는 뜻인데, 이 안에 지금 들어있는 게 scanf("%d %d", &A, &B)이므로 A와 B에 입력을 받는 작업이 먼저 실행이 되고, 입력이 끝나면 scanf의 리턴값을 EOF와 비교해서 조건이 맞으면 루프를 도는 것이고 아니면 루프를 탈출합니다.

ladolcevxta   2년 전

구체적으로 틀린 코드는 단순히 7~8번째 줄 사이에 scanf를 하나 추가만 한 코드였습니다. 제가 while문에 대해 잘못 이해하고 있었네요! 감사합니다:)

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