위에는 소스고 아래는 실행 결과임scanf가 실패했을 때 i에는 정상적으로 garbage 값이 출력되는데이상하게 j는 계속 32767이라는 값이 출력됨??? 왜 이런거야?32767이 무슨 의미일까
혹시 scanf실패했을 때 입력 버퍼에 반환되는 값이 32767인건가?
아니면 -1 이 반환되는데 int값 범위때문에 32767이 된다거나?
맞음?
i는 그냥 undefined behavior고 j는 이미 에러가 났으니까 건드릴 필요가 없어서 냅두는 게 아닐까 싶은데. 내나 UB 취급 아닐까.
내나 UB가 무슨 말인지 모르겠음. 찾아보니 scanf 가 잘못되면 EOF 내뱉는데 이 값때문인 거 같아
UB라서 별 상관은 없는데 EOF 때문은 아닐꺼임. EOF가 보통 -1인데 short로 변환되면 32768이나 -32767이 나오겠지
그런데 궁금한 게 i, j를 선언만 하고 바로 프린트하면 컴파일러가 알아서 0으로 초기화 했는지 둘 다 0으로 출력되거든. j를 안 건들였으면 왜 0이 아니라 32767이 나오는 걸까?
이것좀 봐줘
https://gall.dcinside.com/mgallery/board/view/?id=github&no=2487