감사합니다. 말씀하신대로 %c를 넣으면 오류가 발생하지 않는데, 추가적으로 궁금한 점이 있어서 질문 드립니다.
printf함수를 사용해서 printf("%c", i); 라고 하게 되면 메모리 크기에 차이가 발생해서 오류가 발생하는 것과는 달리, scanf에서는 %c를 사용하여 char 형식으로 값을 입력받아도 메모리 용량이 큰 &i에 값을 대입하기 때문에 즉, 작은 것을 큰 것이 넣는 형태이기 때문에 오류가 발생하지 않는 것이라고 이해하면 될까요?
근데, 이렇게 되면 오류가 발생할 수 있다는 생각이 듭니다. %c로 표현할 수 있는 숫자 (= 아스키 코드로 변환 가능한 숫자)는 0~9까지인데, 만약, 사용자가 10 이상의 정수를 입력하게 되면, 오류가 발생하게 되는 것 아닌가요? 실제로 말씀해주신대로 코드를 수정하고, scanf에 숫자 10을 입력해보고, 디버그 해보았는데, i값이 49로 나오더라구요..! 49는 아스키 코드에서 1을 의미하던데, 컴퓨터 내부적으로는 제가 원래 입력했던 10이 아닌 1의 값이 저장되는 것 같은데 어디에서 잘못 이해했는지 잘 모르겠습니다! 감사합니다.
감사합니다. 말씀하신대로 %c를 넣으면 오류가 발생하지 않는데, 추가적으로 궁금한 점이 있어서 질문 드립니다.
printf함수를 사용해서 printf("%c", i); 라고 하게 되면 메모리 크기에 차이가 발생해서 오류가 발생하는 것과는 달리, scanf에서는 %c를 사용하여 char 형식으로 값을 입력받아도 메모리 용량이 큰 &i에 값을 대입하기 때문에 즉, 작은 것을 큰 것이 넣는 형태이기 때문에 오류가 발생하지 않는 것이라고 이해하면 될까요?
근데, 이렇게 되면 오류가 발생할 수 있다는 생각이 듭니다. %c로 표현할 수 있는 숫자 (= 아스키 코드로 변환 가능한 숫자)는 0~9까지인데, 만약, 사용자가 10 이상의 정수를 입력하게 되면, 오류가 발생하게 되는 것 아닌가요? 실제로 말씀해주신대로 코드를 수정하고, scanf에 숫자 10을 입력해보고, 디버그 해보았는데, i값이 49로 나오더라구요..! 49는 아스키 코드에서 1을 의미하던데, 컴퓨터 내부적으로는 제가 원래 입력했던 10이 아닌 1의 값이 저장되는 것 같은데 어디에서 잘못 이해했는지 잘 모르겠습니다! 감사합니다.