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

godgodgod96님의 프로필 이미지
godgodgod96

작성한 질문수

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

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

status 값이 어떻게 0 or 1 만 나오게 됐는지 모르겠습니다.

작성

·

248

0

status= scanf("%d", &num);

while (status == 1)

{이하생략}

 

에서 status 라는 값은 그냥 우리가 변수를 지정한 것인데 num의 아무수(가령 25)를 입력해주었으면 25라고 /*저장*/이 되어야 된다고 생각하는데

 

실상은 숫자 1개가 들어왔다는 의미에서 1로 /*저장*/이 됩니다. 다시 말씀드리지만 status라는 변수는 그냥 우리가 임의로 만든 int 값 아닌가요?

 

왜 갑자기 숫자가 들어왔다는 의미에서 1, 숫자값이 들어오지 않았다는 의미에 0. 을 표현하게 되었는 지 모르겠습니다.(+ 저장이라는 표현이 맞는 표현인지도 잘 모르겠습니다.)

감사합니다.

답변 2

0

status = scanf("%d", &num)에서 숫자를 입력하면

입력한 숫자는 num 변수로 저장되고

status는 int값이 들어왔으니 true로 1을 반환받았기 때문에

아래 while 반복문이 가능하게 된걸까요?

 

강의 다시 들으니 status가 int이기 때문에 그냥 int 변수 1개가 들어와서 1로 되었다는 말씀 같아요. 문자였으면 int값이 아니기 때문에 0인거죠?

0

안녕하세요 :)

status는 입력하신 값을 입력하는 것이 아니라,

scanf 함수의 반환값을 저장합니다.

 

status = scanf("%d", &num);

 

scanf함수가 올바르게 입력되었을 때에 1을 반환하기 때문에

while (status ==1 ) 같이 코드를 작성한 것입니다.

 

질문자님 말씀대로 status 변수에 특정 값을 입력받고 싶었다면 아래와 같이 입력받았을 겁니다 :)

 

scanf("%d", &status);

 

감사합니다.

 

 

godgodgod96님의 프로필 이미지
godgodgod96

작성한 질문수

질문하기