C 언어 - 문자의 자료형

컴퓨터/C

728x90
반응형

문자형 변수

자료형 char는 정수를 담는 1 Bytye 자료형입니다. 정수를 담지만 출력은 문자를 출력을 할 수 있습니다. 

이렇게 일정한 규칙을 통해 숫자를 문자로 표현하는 것을 문자의 인코딩 또는 부호화라고 말합니다.

대표적으로 보스 부호가 있습니다. 특정한 신호를 문자로 바꾸어주는 체계입니다. C언어에서는 기본적으로 아스키코드라는 체계를 이용하여 숫자를 정수로 변화시켜 줍니다.

 

아스키코드 ASCII 

C언어에서는 이 아스키코드를 통해서 정수를 문자로 인코딩해줍니다.

인터넷에 아스키코드에 검색을 하면 정말 다양하게 잘 정리해둔 아스키코드표를 볼 수 있습니다.

정리하자면 아스키코드는 char형 즉 1Byte 크기에 숫자 0~255까지에 문자를 1:1로 대응하여 인코딩과 디코딩을 해줍니다.

 

아스키코드는 7bit의 기본 아스키코드가 있고 8bit 1byte의 확장 아스키코드가 있습니다. 숫자별로 대응하는 문자는 같으나 표현하는 문자의 수가 늘어난 것이 확장 아스키코드입니다.

 

소스코드를 통해 아스키코드표로 문자가 표현이 어떻게 되는지 한번 확인해 보도록 하겠습니다.

#include <stdio.h>

int main()
{
    char a = 'A';
    char b = 'a';
    char c = '가';
    char d = 100;
    char f = 65;

    printf("char a 의 아스키코드로 변환된 출력 : %c\n", a);
    printf("char a 의 변수에 담겨진 정수  출력 : %d\n", a);

    printf("char b 의 아스키코드로 변환된 출력 : %c\n", b);
    printf("char b 의 변수에 담겨진 정수  출력 : %d\n", b);

    printf("char c 의 아스키코드로 변환된 출력 : %c\n", c);
    printf("char c 의 변수에 담겨진 정수  출력 : %d\n", c);

    printf("char d 의 아스키코드로 변환된 출력 : %c\n", d);
    printf("char d 의 변수에 담겨진 정수  출력 : %d\n", d);

    printf("char f 의 아스키코드로 변환된 출력 : %c\n", f);
    printf("char f 의 변수에 담겨진 정수  출력 : %d\n", f);
    return 0;
}

결과 화면

char c의 변수에는 '가'라는 문자를 담았습니다. 하지만 결과는? 와 -95라는 결과가 나왔습니다. 여기서 유추해 볼 수 있는 것은 ASCII 코드표에서는 한글은 지원하지 않는다는 것입니다.  그렇다면 내 IDE툴에 char의 아스키코드표를 한번 알아보는 소스코드를 작성해 보도록 하겠습니다.

 

소스코드로 아스키코드표 확인해보기

#include <stdio.h>

int main()
{

	for (int i = 0; i < 255; i++)
	{
    	char Character = i;
		printf("정수 %d의 문자 : %c\n",i, Character);

	}
}

안에 반복문이 들어가서 생소할수 있지만 그대로 출력을 하니 제 컴퓨터에서는 아래와 같은 결과가 나왔습니다.

결과를 보니 7bit의 아스키 코드표를 쓰는 것을 확인할 수 있었습니다. 그리고 그 안의 정수에 대한 문자들이 어떤 것들이 들어가는지 확인 또한 가능했습니다. IDE툴의 환경설정이나 버전에 따라 조금씩 차이가 있을 수 있습니다. 직접 여러분들의 C언어를 작성하는 환경에서 char형 자료형이 문자를 어떻게 표현하는지 알아보세요.

728x90
반응형

'컴퓨터 > C' 카테고리의 다른 글

C 언어 - 주석(Comment)  (0) 2021.05.24
C 언어 - 연산자  (0) 2021.05.24
C언어 변수의 선언과 자료형  (0) 2021.05.22
C 언어 - 상수와 변수  (0) 2021.05.21
C 언어 - Hello World!  (0) 2021.05.20

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :