C

C언어를 가르칩니다.

C C언어를 가르칩니다.

char

char 데이터형을 알아봅니다.

char(CHARacter) 형

정의

char형은 CHARacter, 문자형 변수입니다. 문자를 저장하는 데 쓸 수 있습니다. 다시 말하면 수를 저장하는 데 쓸 수도 있다는 말이죠. 아스키 문자를 딱 한 글자 저장할 수 있습니다.

선언

char a; //선언
unsigned un; //부호 없는 char형 변수를 선언합니다.
char b='B'; // b에 65를 저장합니다.
char c='#'; // c에 35를 저장합니다.
char d=64; //d에 64를 저장합니다.
C에서 ""큰따옴표와 ''작은 따옴표는 쓰임새가 다릅니다. ""는 문자열에 쓰이고, ''는 char형에 쓰입니다.

궁금증이 많이 일어날 겁니다.

char b='B';

이게 왜 b에 65를 저장한다는 것일까요? 분명 우리는 =의 오른쪽에 'B'를 입력했는데? 그 이유를 컴퓨터의 저장 방식에서 찾을 수 있습니다. 컴퓨터에서 모든 정보와 값은 수로 저장됩니다. 문자도 마찬가지로, 그 문자에 할당된 수로 저장됩니다. 그럼 할당되는 기준이 뭘까요? 바로 아스키(ASCII) 코드입니다. http://asciitable.com 에서 각 문자에 할당된 수를 볼 수 있습니다. C에서 char형 변수에는 오직 ASCII코드에 있는 값만 저장할 수 있습니다. 'B'는 65라는 수로 인식됩니다. 그러니까 char c='#'는 #에 할당된 아스키 코드가 35이므로 c에 35를 저장하는 것과 같은 효과란 것이죠. char d=64는 char d='@'와 정확히 같은 효과를 냅니다.

크기

printf("%ld",sizeof(char));

결과로는 1이 나옵니다. 1바이트를 차지한다는 뜻이죠. 1바이트는 8비트이므로 char이 표시할 수 있는 값은

00000000

~

11111111

입니다. 즉, 0부터 255까지입니다. 기본적으로 signed이므로 -128부터 127까지지요.

이 char의 크기는 모든 자료형의 기준 값으로 쓰입니다. 무슨 말이냐면, 모든 자료형의 크기는 char의 크기의 배수로 설정됩니다. 그러니까, sizeof(int)는 4가 나오죠. 우리는 그냥 int가 4바이트를 차지한다는 뜻으로 해석하지만, 엄밀히 말하면, int의 크기가 char의 4배라는 뜻이라는 것입니다. sizeof(long), sizeof(long double)도 마찬가지입니다.

출력

아까 char에 저장되는 문자도 결국 수에 불과하다고 했습니다.

char a='A';
printf("%c\n",a); //%c는 변수의 값을 ASCII문자로 출력합니다.
printf("%c\n",a+10);
printf("%d\n",a);
int b=65;
printf("%c\n",b);
printf("%d\n",b);

실행 결과는 다음과 같습니다.

A

K

75

A

65

생각해보면 당연한 일입니다. %c는 변수의 값을 ASCII 문자로 출력합니다. a에는 65가 저장되었으니 65에 할당된 문자인 A가 출력되지요. 65에 10을 더하면 75입니다. 그러므로 11번째 알파벳 K가 출력됩니다. %d는 변수의 값을 10진수로 출력하므로 75가 출력됩니다. int b=65;도 비록 자료형은 다르지만 저장된 값이 65이므로 A를 출력할 수 있습니다. 컴파일러가 int형을 %c로 출력하려 한다고 경고를 띄울 수도 있습니다.

활용

char a[6]="Hello";
printf("%s",a);

C에는 string, 문자열 자료형이 따로 없습니다. 그래서 char형 배열을 선언하여 문자열을 만들어야 합니다. 한 글자씩 만들어서 이어붙인다고나 할까요? 문자열은 곧 배열을 배울 때 알게 됩니다.

댓글

댓글 본문
작성자
비밀번호
버전 관리
truelight
현재 버전
선택 버전
graphittie 자세히 보기