CAFE

C 프로그래밍

한글의 크기

작성자별은빛나고|작성시간15.04.30|조회수393 목록 댓글 0

문자는 1byte인데 printf("%d", sizeof'김'); 에서 4가 출력되는 이유


그리고 printf("%d", sizeof ___); 뭐라쳐야 1로 출력되는지 알려주세요


위 코드를 실행하면 아래와 같이 나타납니다.



마지막을 보면 %c로 처리했을 때 글자가 깨진 것을 알 수 있습니다.

'김'이란 글자를 하나의 char 문자로 보고 작은 따옴표에 넣었습니다.


그러나 한글 한 글자는 2byte를 사용합니다. unsigned char로 한 바이트씩 읽으면 한글을 읽었을 때

그 값이 128 이상인 값으로 나옵니다. 

ascii 코드는 통신을 위해 첫 비트를 원래 사용하지 않지만 통신이 아닌 컴퓨터 내부에서는

첫 비트를 확장문자를 위해 사용합니다.

즉, unsigned char의 128 이상의 값에는 확장 코드가 들어있습니다.

한글은 바로 그 확장코드에 들어있는데, 두 byte를 하나의 한글 코드로 사용합니다.


따라서 한글 한 글자는 하나의 char가 아니라 문자열로 사용해야 합니다. 당연히 큰 따옴표로 감싸야 합니다.

문자열로 사용하는 만큼 끝에 null 문자가 들어가야 합니다. 

즉, 한글 한 글자만 사용해도 3byte의 문자열로 표현해야 합니다.


char hangul[3] = "김";


두 바이트는 "김"이라는 글자가 차지하고 나머지 한 바이트는 널문자가 들어가게 됩니다.


위를 보면 작은 따옴표로 감쌌는데 4byte로 나왔습니다.


char 문자도 컴퓨터 내부에서 처리할 때는 int로 연산을 수행합니다.

아마도 그런 연유로 1byte로 처리 불가하니 4byte로 나온 것 같습니다.


16bit 시스템(운영체제)에서는 2byte로 나올 수도 있을 것 같습니다.

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼