컴퓨터는 문자를 이해할 수 없음.
누군가는 “어, char 자료형의 변수에 문자 저장 가능한데요?” 라고 반문할 수 있습니다. Nope!!! 프로그래머는 문자로 작성된 소스코드를 컴퓨터가 그대로 이해할 수 없기에 컴파일러를 통해 이진패턴으로 만들었다는 걸 기억해야 합니다. 이 과정을 빌드 프로세스라고 불렀습니다. 즉, char 자료형의 변수에 문자를 그대로 저장할 수 없다는 뜻입니다. 뭔가 처리가 필요합니다.
인코딩(Encoding) Vs. 디코딩(Decoding)
형태 A에서 형태 B로 변환하는 것을 인코딩이라 합니다. 반대로 형태 B에서 형태 A로 변환하는 것을 디코딩이라 합니다.
ASCII(American Standarded Code for Information Interchange)
문자 형태의 데이터와 숫자 형태의 데이터 사이의 인코딩 규약 중 하나. 여러 인코딩 규약이 있으나, 그 중 가장 쉽고 대표적인 규약. 규칙 표는 [여기]를 참고하시면 됩니다. 어쨋든 컴퓨터에 값이 저장되기 위해서는 숫자 형태여야 한다는 점을 기억합시다.
Ex011001) ASCII
// Main.c
#include <stdio.h>
int main(void)
{
char ch1 = 'A';
char ch2 = '1';
printf("ch1 = %c\\n", ch1);
printf("ch1 = %d\\n", ch1);
printf("ch1 + 2 = %c\\n", ch1 + 2);
printf("ch1 + 2 = %d\\n", ch1 + 2);
printf("ch2 = %c\\n", ch2);
printf("ch2 = %d\\n", ch2);
printf("ch2 + 2 = %c\\n", ch2 + 2);
printf("ch2 + 2 = %d\\n", ch2 + 2);
printf("'A' + 24 = %c\\n", 'A' + 24);
printf("'A' + 24 = %d\\n", 'A' + 24);
return 0;
}
// Main.c
#include <stdio.h>
int main(void)
{
char ch1 = 'B';
char ch2 = '2';
printf("ch1 = %c\\n", ch1);
printf("ch1 = %d\\n", ch1);
printf("ch1 + 2 = %c\\n", ch1 + 2);
printf("ch1 + 2 = %d\\n", ch1 + 2);
printf("ch2 = %c\\n", ch2);
printf("ch2 = %d\\n", ch2);
printf("ch2 + 2 = %c\\n", ch2 + 2);
printf("ch2 + 2 = %d\\n", ch2 + 2);
printf("'B' + 24 = %c\\n", 'B' + 24);
printf("'B' + 24 = %d\\n", 'B' + 24);
return 0;
}
[참고] 지역별 문자 인코딩과 유니코드
과거에는 ASCII, EUC-KR 등등 각 나라마다 다른 문자 인코딩들이 존재했습니다. 이는 서로 호환되지 않아 다국어 지원에 문제가 생겼습니다.
그래서 전세계 모든 문자를 표현 및 처리하기 위해 만들어진 문자 인코딩이 유니코드(Unicode)입니다.
유니코드에는 UTF-8, UTF-16, UTF-32가 있습니다.
'C' 카테고리의 다른 글
| [내배캠자습]C언어 챕터 2-1 : 연산자와 피연산자, 산술 연산자, 복합 대입 연산자, 값식문 (0) | 2026.03.27 |
|---|---|
| [내배캠자습] C언어 챕터 1-11 : 입력 기초 (0) | 2026.03.27 |
| [내배캠자습]C언어 챕터 1-9 : 변수 (0) | 2026.03.27 |
| [내배캠자습]C언어 챕터 1-8 : 자료형 (0) | 2026.03.27 |
| [내배캠자습]C언어 챕터 1-7 : 리터럴 (0) | 2026.03.27 |