들어가며...
문자형 변수의 경우는 다른 자료형들 보다 비교적 간단합니다. 크기가 1바이트여서 표현의 개수는 256개이며 0~255까지의 범위를 갖습니다. 그럼 문자형 변수에 대해서 간략하게 살펴보도록 하겠습니다.
- Table of Contents
- 문자형 변수의 종류 및 길이
- ASCII 코드
문자형 변수의 종류 및 길이
문자형 변수의 종류 및 길이는 다음과 같습니다.
타입 | 크기(바이트) | 표현범위 |
char | 1 | -128 ~ 127 |
unsigned char | 1 | 0 ~ 255 |
위의 내용을 코드로 확인하면 다음과 같습니다.
● 예제코드
#include <stdio.h>
int main(void) {
printf("The size of char : %lu\n", sizeof(char));
printf("The size of unsigned char : %lu\n", sizeof(unsigned char));
return 0;
}
● 결과확인
ASCII 코드
컴퓨터는 모든 표현을 정수형(정확하게는 0과 1)으로 밖에 표현 못합니다. 따라서, 문자 'a'와 같은 문자값을 표현하기 위해서는 특정 정수값으로 변환하여 표현하여야 하는데 이 때 사용되는 것이 ASCII 코드 입니다.
● ASCII 코드표
위의 표에서 알 수 있듯이 제어문자와 공백문자를 제외한 나머지 값들은 사람의 눈으로 식별이 가능한 값들이며 다른 것은 몰라도 0x30(0)으로 시작하는 숫자와 소문자 알파벳, 대문자 알파벳의 시작 값 각각 0x61('a'), 0x41('A')은 외워두시는 것이 좋습니다.
다음은 실제 문자의 값이 어떻게 표현하는 지 예제로 알아보도록 하겠습니다.
● 예제코드
#include <stdio.h>
int main(void) {
int count = 32;
const int COL_NUM = 5;
const int MAX_NUM = 127;
while(1) {
int nColumn = (MAX_NUM - count) >= COL_NUM ? COL_NUM : (MAX_NUM - count) % COL_NUM;
for(int i = 0 ; i < nColumn ; i++) {
// print the character
printf("|%3d|0x%02x|%-5c|%c", count, count, (0x000000FF & count), 0x20);
// increase the count
count++;
}
printf("\n");
// terminate while loof
if(nColumn != COL_NUM) {
break;
}
}
}
* 제어문자와 공백문자 및 127이상의 문자의 경우 오동작할 가능성이 있기 때문에 예제에서 배제하였습니다.
● 결과확인
● 확장열 문자
위 ASCII 코드 값 중 숫자, 알파벳 및 구두점 이외에 빈번하게 사용하는 문자를 특별하게 확장열이라 하여 '\'의 값과 함께 사용할 수 있는 문자들이 있습니다.
확장열 표현 | 코드 (16진수) | 설명 |
\a | 0x07 | 벨 소리 |
\b | 0x08 | 백 스페이스 |
\t | 0x09 | 탭 |
\n | 0x0a | 개행 (줄넘김) |
\\ | 0x5c | 백슬래쉬 |
\' | 0x27 | 작은 따옴표 |
\" | 0x22 | 큰 따옴표 |
\? | 0x3f | 물음표 |
개행문자의 경우 앞의 많은 예제에서 printf() 함수를 사용할 때 문자열 끝에 거의 항상 붙혀온 것을 확인하실 수 있었을 것입니다. 이와 같은 형태로 슬래쉬('\') 함께 사용하면 해당 문자를 표현할 수 있습니다.
마무리...
이상으로 간략하게 문자형 변수에 대해서 살펴봤습니다. 이번 장은 크게 어려운 부분이 없었을 것이라 생각됩니다. 문자값이 ASCII코드 값으로 메모리에 저장된 다는 것만 알아두시면 될 듯 합니다.
U2ful은 ♥입니다. @U2ful Corp.
'Programming > C언어 초급' 카테고리의 다른 글
C언어 초급) 02.변수 : 07. 구조체와 사용자 정의 타입 (0) | 2020.06.01 |
---|---|
C언어 초급) 02.변수 : 06. 열거형(enum) (0) | 2020.05.29 |
C언어 초급) 02.변수 : 04. 실수형 (0) | 2020.05.27 |
C언어 초급) 02.변수 : 03. 정수형 (0) | 2020.05.25 |
C언어 초급) 02.변수 : 02. 입출력 (0) | 2020.05.25 |