9.0 문자 자료형 사용하기
C 언어에서는 정수 자료형인 char를 이용하여 문자 한 개를 저장합니다. 다음은 문자 자료형의 크기와 저장할 수 있는 범위입니다.
자료형 | 크기 | 범위 | 비고 |
---|---|---|---|
char signed char |
1바이트, 8비트 | -128~127 | 문자 저장 |
unsigned char | 1바이트, 8비트 | 0~255 | 바이트 단위 데이터 저장 |
char에 문자를 저장할 때는 문자 자체를 저장하는 것이 아니라 문자에 해당하는 정숫값을 저장하게 됩니다. 다음은 각 정숫값이 어떤 문자에 해당되는지 표로 나타낸 것이며 이 규칙을 아스키(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 코드표는 '부록 6. ASCII 코드표'를 참조하세요.
참고 | 정수 자료형에 2바이트값 저장
작은따옴표로는 문자 하나만 묶을 수 있지만 정수 자료형에 2바이트 값을 저장할 때는 문자 두 개를 작은따옴표로 묶기도 합니다.
unsigned short magic = 'BA'; // 변수에 2 바이트값 저장