코딩 노트

05-2 문자의 표현방식과 문자를 위한 자료형 본문

C

05-2 문자의 표현방식과 문자를 위한 자료형

newbyeol 2021. 5. 5. 19:53

1. 문자의 표현을 위한 약속! 아스키(ASCII) 코드!

숫자를 이용해서 문자를 표현하려면 숫자를 문자에 연결(mapping)시키는 것이 유일한 방법이다. C언어는 '미국 표준 협회'에 의해서 제정된 '아스키 코드'라는 표준을 선택해서 문자를 표현한다. 그리고 이러한 아스키코드는 알파벳과 일부 특수문자를 포함하여 총 128개의 문자로 이뤄져 있다. 참고로 몇몇 아스키 코드와 아스키 코드에 할당된 '아스키 코드 값'을 정리하면 다음과 같다.

 

2. 문자는 이렇게 표현되는 거구나!

컴퓨터는 문자를 숫자로 표현한다는 사실도 알았고, 숫자로 표현하기 위해서 정의된 '아스키 코드'의 존재도 알게 되었다. 그렇다면 실제 프로그램상에서 문자는 어떻게 표현이 될까? 이에 대한 이해를 위해서 다음 코드를 보자.

int main(void)
{
	char ch1 = 'A'; // 이렇듯 문자는 작은 따옴표로 감싸서 표현한다.
	char ch2 = 'C';
    . . . .
}

위의 코드에서 보이듯이 프로그램상에서의 문자표현에는 작은 따옴표가 사용된다. 그리고 이렇게 표현된 문자는 컴파일러에 의해서 다음과 같이 변환이 된다.

int main(void)
{
	char ch1 = 65; // 문자 A의 아스키 코드 값은 65
	char ch2 = 67; // 문자 C의 아스키 코드 값은 67
    . . . .
}

즉, 컴파일러도 아스키 코드를 알고 있다. 따라서 프로그래머가 표현해 놓은 문자를 컴퓨터가 인식할 수 있도록 숫자로 바꿔버린다.

위 예제에서 보인 %c는 "문자의 형태로 데이터를 출력(또는 입력)하라"라는 의미이다.

정수는 출력의 방법에 따라서 문자의 형태로도, 숫자의 형태로도 출력이 가능하다.

 

그리고 아스키 코드 값은 0이상 127이하로 이뤄져 있어서 char형 변수로 충분히 저장 가능하다. 그래서 문자를 저장할 때는 int형 변수를 사용하지 않고 char형 변수를 사용한다. 하지만 int형으로 선언해야 빠르다 했으니 문자도 int형 변수에 저장해야 하는 것 아니냐고 생각할 수 있는데, 그렇다면 int형으로 선언했을 때 무엇이 빨라진다고 했는지 상기해보면 된다. 그것은 '연산'인데 즉, 정수형 연산을 할 때 빠르다고 하였다. 하지만 char형 변수에 저장된 문자를 가지고 연산을 할 일이 없기 때문에(변수에 실제 저장 되는 것은 문자가 아니라 숫자이기 때문에 연산이 불가능한 건 아니지만)문자를 저장하는 데에는 char형 변수가 더 적합하다. 

 

char형은 문자의 표현을 목적으로 정의된 자료형이기 때문에 '문자형'으로 분류하기도 하지만 char형은 정수형이다. 문자도 정수의 형태로 표현이 되고, 실제로 char형 변수에 저장되는 것은 정수이기 때문이다.

'C' 카테고리의 다른 글

05-4 자료형의 변환  (0) 2021.05.06
05-3 상수에 대한 이해  (0) 2021.05.05
05-1 C언어가 제공하는 기본 자료형의 이해  (0) 2021.03.05
04-3 비트 연산자  (0) 2021.02.19
04-2 정수와 실수의 표현방식  (0) 2021.02.19