C 언어에서 문자형 자료형은 하나의 문자를 저장하거나 다룰 때 사용됩니다. 문자형 데이터는 컴퓨터에서 숫자로 표현되며, C 언어는 이 숫자를 문자로 변환하여 표현합니다.
문자형 자료형 (char)
char는 C 언어에서 문자를 저장하는 기본 자료형입니다. 하나의 문자를 1바이트(8비트) 크기의 메모리에 저장합니다.
C 언어에서 char는 실제로는 정수형 자료형의 일종으로, 1바이트 크기의 정수를 저장합니다. 이 정수는 ASCII (American Standard Code for Information Interchange) 코드 값을 가집니다.
문자와 ASCII 코드
#include <stdio.h>
int main() {
char letter = 'A'; // 문자 'A'를 저장
printf("Character: %c\n", letter); // 문자로 출력
printf("ASCII value: %d\n", letter); // ASCII 값으로 출력
return 0;
}
출력 결과 :
Character: A
ASCII value: 65
위 코드에서 letter 변수는 문자 'A'를 저장하며, ASCII 코드 값으로는 65입니다.
%c는 문자를 출력하는 형식 지정자이고, %d는 정수(숫자)로 출력하는 형식 지정자입니다.
char의 범위
char 자료형은 1바이트를 사용하므로, -128에서 127까지의 값을 가질 수 있습니다. 이는 부호 있는 signed char를 기준으로 한 값입니다.
signed char : 부호가 있는 문자형 (-128 ~ 127)
unsigned char : 부호가 없는 문자형 (0 ~ 255)
#include <stdio.h>
int main() {
signed char signedChar = -65; // 음수 값
unsigned char unsignedChar = 200; // 양수 값 (0~255)
printf("Signed char: %d\n", signedChar);
printf("Unsigned char: %u\n", unsignedChar);
return 0;
}
출력 결과 :
Signed char: -65
Unsigned char: 200
signed char는 음수를 표현할 수 있지만, unsigned char는 양수만을 표현합니다.
문자형 자료형의 활용
문자형 자료형은 단순히 문자를 저장하는 것 외에도, 정수처럼 사용되어 특정 연산을 수행할 수 있습니다. 예를 들어, 문자 간의 차이를 계산하거나, 다음 문자를 찾을 수 있습니다.
예제: 문자 연산
#include <stdio.h>
int main() {
char letter = 'A';
char nextLetter = letter + 1; // 'A' 다음 문자
printf("Current letter: %c\n", letter);
printf("Next letter: %c\n", nextLetter);
return 0;
}
출력 결과 :
Current letter: A
Next letter: B
문자 'A'에 1을 더하면, ASCII 코드 값이 1 증가하여 다음 문자 'B'가 됩니다.
문자형 데이터와 ASCII 코드
문자형 데이터는 내부적으로 ASCII 코드로 표현되므로, 특정 문자의 코드 값을 쉽게 확인할 수 있습니다.
예제: 문자와 숫자 변환
#include <stdio.h>
int main() {
char digit = '5';
int number = digit - '0'; // '5'의 ASCII 값을 빼서 정수로 변환
printf("Character: %c\n", digit);
printf("Converted number: %d\n", number);
return 0;
}
출력 결과 :
Character: 5
Converted number: 5
'5'는 ASCII 값 53을 가지므로, '0' (ASCII 값 48)을 빼면 실제 정수 값 5를 얻을 수 있습니다.
요약
char 자료형은 1바이트 크기의 메모리를 사용하며, 하나의 문자를 저장합니다.
char는 내부적으로 ASCII 코드를 사용해 문자를 숫자로 표현합니다.
signed char와 unsigned char는 부호가 있는 경우와 없는 경우를 구분합니다.