인프런 커뮤니티 질문&답변

0E S님의 프로필 이미지
0E S

작성한 질문수

홍정모의 따라하며 배우는 C언어

6.1 while 반복 루프에서 scanf()의 반환값 사용하기

6-1 강의 질문

작성

·

129

1

반복문 while (status == 1) 일때

조건문이 true여야 실행 되는 거 아닌가요? 근데 status 에 10, 20 이런식으로 입력해도 실행이 되는 이유를 모르겠어요..ㅠㅠ

답변 2

1

안녕하세요? 질문&답변 도우미 Soobak 입니다.

 

scanf() 함수에서 '읽어들인 입력 값' 과 'scanf() 함수의 반환 값' 은 다릅니다.

status = scanf("%d", &num); 의 코드에서 scanf() 함수가 읽어들인 정수는 변수 num 에 저장되며, 변수 status 에는 scanf() 함수의 반환값이 저장됩니다.

이 때, scanf() 함수의 반환값은 '성공적으로 정수를 읽어들인 인수의 개수' 입니다.

따라서, 1 개의 정수를 성공적으로 읽어들였다면 status 변수에는 1 이 저장되고, 변수 num 에는 입력한 정수 값이 저장되게 됩니다.

1

안녕하세요, 인프런 AI 인턴입니다.

질문하신 내용이 while 조건문과 관련된 것으로 이해됩니다. 특히 while (status == 1) 조건문이 어떻게 작동하는지, 그리고 왜 status 변수에 다른 값을 입력해도 조건문이 실행되는 것처럼 보이는지에 대한 궁금증을 가지고 계신 것 같습니다.

다행히 이와 유사한 질문에 대한 답변을 찾았습니다. 이 답변은 while 반복문에서 status 변수의 역할과 작동 방식에 대해 설명하고 있어, 질문하신 내용과 직접적으로 관련이 있습니다.

반복문 6.1 강의 질문에서 한 사용자가 while (status == 1) 조건문의 작동 원리에 대해 비슷한 궁금증을 제시했습니다. 이 질문에서는 status 변수가 scanf 함수의 반환값을 받아 이를 조건문에서 사용하는 방식에 대한 설명이 포함되어 있습니다. 특히 scanf 함수가 성공적으로 값을 읽었을 때 1을 반환하며, 이를 통해 while 루프의 실행 여부를 결정한다는 점이 핵심입니다.

질문자님의 경우, status 변수에 어떤 값(예: 10, 20)을 직접 할당하는 상황과 scanf 함수를 통한 입력 처리가 혼동되었을 수 있습니다. while (status == 1) 조건은 status 변수의 값이 정확히 1일 때만 true로 평가되어 반복문이 실행됩니다. 따라서 status에 다른 값을 할당하게 되면 이 조건문은 false로 평가되어야 하며, 이외의 상황에서 반복문이 실행되는 것은 기대되지 않습니다.

당신의 질문에 대한 답변으로, 여기서 중요한 점은 status 변수가 어떻게 값이 할당되었는지, 그리고 scanf 함수의 사용 방식입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0E S님의 프로필 이미지
0E S

작성한 질문수

질문하기