9.0 문자 자료형 사용하기

C 언어에서는 정수 자료형인 char를 이용하여 문자 한 개를 저장합니다. 다음은 문자 자료형의 크기와 저장할 수 있는 범위입니다.

표 9‑1 char의 크기 및 범위
자료형 크기 범위 비고
char
signed char
1바이트, 8비트 -128~127 문자 저장
unsigned char 1바이트, 8비트 0~255 바이트 단위 데이터 저장

char에 문자를 저장할 때는 문자 자체를 저장하는 것이 아니라 문자에 해당하는 정숫값을 저장하게 됩니다. 다음은 각 정숫값이 어떤 문자에 해당되는지 표로 나타낸 것이며 이 규칙을 아스키(ASCII) 코드라고 부릅니다.

표 9‑2 정수 10진수, 16진수와 문자 대응표(ASCII 코드)
10진수 16진수 문자 10진수 16진수 문자 10진수 16진수 문자
32 0x20 공백(space) 64 0x40 @ 96 0x60 `
33 0x21 ! 65 0x41 A 97 0x61 a
34 0x22 " 66 0x42 B 98 0x62 b
35 0x23 # 67 0x43 C 99 0x63 c
36 0x24 $ 68 0x44 D 100 0x64 d
37 0x25 % 69 0x45 E 101 0x65 e
38 0x26 & 70 0x46 F 102 0x66 f
39 0x27 ' 71 0x47 G 103 0x67 g
40 0x28 ( 72 0x48 H 104 0x68 h
41 0x29 ) 73 0x49 I 105 0x69 i
42 0x2A * 74 0x4A J 106 0x6A j
43 0x2B + 75 0x4B K 107 0x6B k
44 0x2C , 76 0x4C L 108 0x6C l
45 0x2D - 77 0x4D M 109 0x6D m
46 0x2E . 78 0x4E N 110 0x6E n
47 0x2F / 79 0x4F O 111 0x6F o
48 0x30 0 80 0x50 P 112 0x70 p
49 0x31 1 81 0x51 Q 113 0x71 q
50 0x32 2 82 0x52 R 114 0x72 r
51 0x33 3 83 0x53 S 115 0x73 s
52 0x34 4 84 0x54 T 116 0x74 t
53 0x35 5 85 0x55 U 117 0x75 u
54 0x36 6 86 0x56 V 118 0x76 v
55 0x37 7 87 0x57 W 119 0x77 w
56 0x38 8 88 0x58 X 120 0x78 x
57 0x39 9 89 0x59 Y 121 0x79 y
58 0x3A : 90 0x5A Z 122 0x7A z
59 0x3B ; 91 0x5B [ 123 0x7B {
60 0x3C 92 0x5C \ 124 0x7C |
61 0x3D = 93 0x5D ] 125 0x7D }
62 0x3E 94 0x5E ^ 126 0x7E ~
63 0x3F ? 95 0x5F _      

65(0x41)부터 90(0x5A)까지 A~Z 알파벳 대문자를 나타내고, 97(0x61)부터 122(0x7A)까지 a~z 알파벳 소문자를 나타냅니다. 그리고 나머지 값들은 공백, 숫자, 특수 문자 등을 나타냅니다. 여기서 표의 내용은 모두 외울 필요는 없습니다. 대문자 A는 65(0x41)자 a는 97(0x61)정도만 기억하세요(ASCII 코드는 필요할 때마다 찾아보면 되는 부분입니다. 그렇게 부담가지지 않아도 됩니다).

C 언어에서 문자는 ' ' (작은따옴표)로 묶어서 표현합니다.

char c1 = 'a';

작은따옴표는 문자 하나만 묶을 수 있으며 두 개 이상은 묶을 수 없습니다.

char c1 = 'Hello, world!';    // 잘못된 사용법. 작은따옴표는 문자 하나만 묶을 수 있음
참고 | ASCII 코드

ASCII 코드는 0부터 127까지의 정수를 알파벳 대소문자, 특수 문자, 공백, 각종 제어 문자로 표현합니다. 전체 ASCII 코드표는 온라인에서 'ASCII 코드표'를 검색하면 쉽게 찾아볼 수 있습니다.

참고 | 정수 자료형에 2바이트값 저장

작은따옴표로는 문자 하나만 묶을 수 있지만 정수 자료형에 2바이트 값을 저장할 때는 문자 두 개를 작은따옴표로 묶기도 합니다.

unsigned short magic = 'BA';    // 변수에 2 바이트값 저장