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