본문 바로가기

프로그래밍 언어/C

C 언어 char 타입, 문자 데이터 저장과 ASCII 코드 활용

C 언어 char 타입, 문자 데이터 저장과 ASCII 코드 활용

C 언어에서 char 타입은 가장 기본적이면서도 중요한 데이터 타입 중 하나입니다. 단순히 문자를 저장하는 데 사용되는 것으로 알려져 있지만, 실제로는 정수형 데이터로 동작하며, 내부적으로는 ASCII 코드와 밀접한 관계를 가지고 있습니다. 이 글에서는 char 타입의 메모리 구조, 문자 표현, ASCII 활용, 연산 가능성 등 실전적인 관점에서 깊이 있게 설명합니다.

 

 

목차

  1. char 타입이란?
  2. 메모리 구조와 저장 방식
  3. ASCII 코드와의 연결
  4. 문자 초기화 및 출력
  5. char 타입과 산술 연산
  6. signed char vs unsigned char
  7. 실전 예제와 활용 팁

 

1. char 타입이란?

char는 C 언어의 기본 데이터 타입으로, 일반적으로 1바이트(8비트) 크기를 가지며, 문자 하나를 저장하는 데 사용됩니다.

  • 실제로는 0~255 또는 -128~127 범위의 정수값을 저장합니다.
  • 문자는 내부적으로 정수값(ASCII 코드)으로 변환되어 저장됩니다.

 

 

 

2. 메모리 구조와 저장 방식

char 변수는 1바이트의 메모리를 사용하며, 그 안에는 정수값(0~255 또는 -128~127)이 저장됩니다. 이 정수는 곧 문자로 해석됩니다.

char ch = 'A';  // 내부적으로는 65로 저장됨 (ASCII 코드)
  

TIP: C 언어에서 'A'는 정수 65로 취급됩니다.

 

 

 

3. ASCII 코드와의 연결

C 언어의 char 타입은 ASCII 문자 코드와 직접 연결되어 있어, 모든 문자는 고유한 숫자 값으로 표현됩니다.

문자 ASCII 코드
'A' 65
'a' 97
'0' 48

 

 

 

4. 문자 초기화 및 출력

char 변수는 문자 리터럴이나 ASCII 코드로 초기화할 수 있으며, printf를 사용해 출력할 수 있습니다.

char ch1 = 'Z';
char ch2 = 90;

printf("%c\n", ch1); // Z
printf("%c\n", ch2); // Z
  

 

 

 

 

5. char 타입과 산술 연산

char 타입은 정수형이기 때문에 산술 연산이 가능합니다. 이를 이용해 알파벳 자동 생성, 대소문자 변환 등의 응용이 가능합니다.

  • 'A' + 1 → 'B'
  • 'a' - 'A' → 32
  • tolower('B') → 'b' (ctype.h 사용 시)

 

 

 

6. signed char vs unsigned char

char는 기본적으로 signed 또는 unsigned 중 하나로 컴파일러에 따라 다르게 처리됩니다.

차이점 요약:

타입 값 범위
signed char -128 ~ 127
unsigned char 0 ~ 255

 

 

 

7. 실전 예제와 활용 팁

다음은 char 타입을 실제 코드에서 응용하는 몇 가지 예입니다.

// 대문자 알파벳 출력
for (char c = 'A'; c <= 'Z'; c++) {
    printf("%c ", c);
}
  

활용 팁:

  • 문자 비교는 숫자 비교처럼 가능함 (if (ch == 'a') 등)
  • 함수 인자로 char 넘길 때 정수로 처리 가능
  • 유니코드 처리가 필요하다면 wchar_t나 UTF-8 라이브러리 활용