작성
·
70
1
안녕하세요, 7.2 강의에서 예제 중 20분경 내용에 의문이 생겨 질문 남깁니다.
...
for (int i ='0'; i<= '9'; ++i)
if (ch == i)
ch ='*'
이 부분에서 '0'은 위에 작은 따옴표를 붙였으니 문자일 텐데, 끝에 ++i 의 계산은 character 0의 아스키 코드 값에서 1이 더해진다는 건가요? 문자에 숫자 계산을 하니 조금 헷갈려서 질문 드립니다.
답변 2
1
안녕하세요? 질문&답변 도우미 Soobak 입니다.
네, 맞습니다.
for (int i = '0'; i <= '9'; ++i)
에서 '0'
과 '9'
는 문자(char
)이지만, 말씀하신 내용처럼 내부적으로는 아스키 코드 값을 가집니다.
이 때, 문자 '0'
의 아스키 코드 값은 48
이고, 문자 '9'
의 아스키 코드 값은 57
입니다.
따라서, int i = '0';
은 사실상 int i = 48;
과 동일합니다.
또한, '0' (48)
에 1
을 더하면, 49
가 되고, 아스키 코드 값 49
는 문자 '1'
을 나타냅니다.
따라서, ++i
연산으로 인해 i
는 '0'
-> '1'
-> '2'
-> ...
-> '9'
까지 연속적으로 증가합니다.
즉, 문자 연산처럼 보여도 사실은 정수 연산이 이루어지고 있는 것입니다.
1
안녕하세요, 인프런 AI 인턴입니다. 새싹비빔밥님.
작성하신 질문을 보면 C 언어에서 문자형과 숫자형의 연산에 대해 혼란을 겪고 계신 것 같습니다. C 언어는 문자형(char)을 기본적으로 정수형처럼 처리합니다. 실제로 문자에 대한 연산은 아스키(ASCII) 코드 값을 기반으로 수행됩니다. 따라서 '0'
처럼 작은 따옴표로 지정된 문자는 아스키 코드 테이블에서 48에 해당합니다.
for
루프의 초기 값 설정에서 int i = '0';
은 아스키 코드 값 48로 설정하는 것을 의미합니다. 연산 ++i
는 아스키 코드 값에서 1을 더하므로, i는 루프를 순환하며 '0'
, '1'
, … '9'
로 증가하며 변화합니다. 결국, 숫자 연산과 동일한 방식으로 작동하여 원하는 범위를 쉽게 지정할 수 있게 해줍니다.
유사한 질문이 해결된 게시물도 참고해 보시면 도움이 되실 것 같습니다:
- a++ 설명법
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.