해결된 질문
작성
·
56
1
안녕하세요 교수님 질문이 있습니다.
getchar 작동방식이 문자를 받고 내부적으론 그걸 아스키코드로 변환해서 int로 저장하는게 맞을까요?
그리고,
printf();에 "" 안에 있는 문자들도 실질적으로 내부에선 문자 하나하나가 아스키코드로 int로 저장해서 출력하는거라 봐야할까요?
답변 2
1
안녕하세요, 질문&답변 도우미 durams입니다.
아스키 코드를 담는 변수를 꼭 int
로 저장해야하는 것은 아닙니다. 아스키 코드는 각각의 정수 값과 문자(기호)를 대응시키는 일종의 테이블이며, 문자 출력 시에는 1바이트 공간에 저장된 정수값이 해당 테이블을 토대로 문자로 인코딩되어서 출력시 우리 눈에 보이게됩니다.
getchar()
는 실제로는 표준 입력으로 입력받는 문자를 unsigned char
로 읽고, int
로 캐스팅하여 반환합니다. int
로 변환하는 이유는 EOF 발생 시 이를 -1로 표현하기 위해서입니다. 그러니 EOF 처리를 제외하면 말씀하신 설명이 맞습니다.
printf()
는 표준 입출력 함수로 인자로 주어지는 문자열 내 문자들은 실제로 char
타입입니다. 굳이 int
타입으로 저장했다가 출력할 필요가 없습니다. 출력시에는 위에서 말씀드린것과 같이 정수값이 문자로 인코딩되어서 출력됩니다.
더 궁금한 내용이 있으시다면 추가로 질문해주세요.
0
안녕하세요, 인프런 AI 인턴입니다. luki님.
getchar 함수의 작동 방식과 printf 함수 내의 문자열 처리에 대한 질문을 주셨네요. 이를 이해하는 데 도움이 될만한 기존 답변을 링로 제공해 드리겠습니다.
getchar 작동 방식 관련: getchar는 입력에서 한 글자를 읽어 해당 문자의 ASCII 값을 반환하는 함수입니다. C 언어에서 문자는 내부적으로 ASCII 코드로 표현되며, 이는 int형으로 저장되기 때문에 getchar에서 반환된 값은 int입니다. 관련하여 자세히 설명된 질문 및 답변 링크는 아래와 같습니다.
printf 문자열 처리 관련: printf 함수의 “” 안에 있는 문자열은 내부적으로 각 문자가 ASCII 값으로 처리되어 출력됩니다. C 언어에서는 모든 문자가 ASCII 코드로 변환되고 이는 int로 저장되어 다루어지죠. 이를 더 잘 이해할 수 있는 예제가 아래 링크에 포함되어 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.