inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

7.2 표준 입출력 함수들 getchar(), putchar() 예제

7.2 i = '0'일 때 i++의 계산에 관하여

해결된 질문

159

새싹비빔밥

작성한 질문수 15

1

안녕하세요, 7.2 강의에서 예제 중 20분경 내용에 의문이 생겨 질문 남깁니다.

...

for (int i ='0'; i<= '9'; ++i)

if (ch == i)

ch ='*'

이 부분에서 '0'은 위에 작은 따옴표를 붙였으니 문자일 텐데, 끝에 ++i 의 계산은 character 0의 아스키 코드 값에서 1이 더해진다는 건가요? 문자에 숫자 계산을 하니 조금 헷갈려서 질문 드립니다.

c

답변 2

1

Soobak

안녕하세요? 질문&답변 도우미 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 인턴

안녕하세요, 인프런 AI 인턴입니다. 새싹비빔밥님.

작성하신 질문을 보면 C 언어에서 문자형과 숫자형의 연산에 대해 혼란을 겪고 계신 것 같습니다. C 언어는 문자형(char)을 기본적으로 정수형처럼 처리합니다. 실제로 문자에 대한 연산은 아스키(ASCII) 코드 값을 기반으로 수행됩니다. 따라서 '0'처럼 작은 따옴표로 지정된 문자는 아스키 코드 테이블에서 48에 해당합니다.

for 루프의 초기 값 설정에서 int i = '0';은 아스키 코드 값 48로 설정하는 것을 의미합니다. 연산 ++i는 아스키 코드 값에서 1을 더하므로, i는 루프를 순환하며 '0', '1', … '9'로 증가하며 변화합니다. 결국, 숫자 연산과 동일한 방식으로 작동하여 원하는 범위를 쉽게 지정할 수 있게 해줍니다.

유사한 질문이 해결된 게시물도 참고해 보시면 도움이 되실 것 같습니다:
- a++ 설명법

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Export template 안됨

1

8

2

완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.

1

52

3

main 함수에서 왜 int만 선언이 되는걸까요

1

56

2

8비트 2진수 변환시 왜 1을 더해야하나요?

1

54

2

혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?

1

49

1

프로토타입과 함수간의 인자 불일치

1

73

2

12.12 헤더 관련 질문

1

60

2

Visual Studio Community 2026 사용 문의

1

137

2

Q. 15:30, 부호가 있는 8비트 정수 질문

1

60

2

getchar(), putchar()

1

93

3

강의자리ㅛ

1

79

2

비주얼스튜디오코드로 공부해도 상관없나요?

1

112

2

소스파일안에 여러 파일

1

75

2

F5와 F7의 차이

1

76

2

c = TWO * (a+b); 에서 a와 b는?

1

58

2

; 세미콜론을 붙이는 기준에 문의

1

68

1

Step over 기능 문의

1

53

2

2.6 강의 따옴표 출력 규칙 문의

1

74

2

int main 함수 관련 오류 문의

1

67

2

13.4 words[0]

0

60

2

11.7 함수를 구현해 봤습니다.

1

62

2

11.6 직접 strcmp와 strncmp를 구현해 보았습니다.

1

64

2

11.6 my_strcat과 my_strncat을 구현해봤습니다.

1

53

2

11.6 fit_str함수를 구현해 봤습니다.

1

53

2