char 의 %x 출력
글쓴이: junk11 / 작성시간: 목, 2008/01/24 - 10:01오전
char ar[] = "가";
라고 초기화하고
printf("%x\n", ar[0]);
printf("%x\n", ar[1]); 이렇게 출력하면
ffffffb0
ffffffa1 으로 나옵니다
그리고,
char ch = 'a'; 를 %x로 출력하면
16진수 61 이 나오게 되죠
어째서 같은 1바이트인데
2바이트 문자를 한바이트만 출력하면
ffffff 가 붙어서 나오는 걸까요?
초보 공부에 힌트를 부탁합니다
Forums:


일단 한글은 한바이트가 아니죠
'가'는 완성형(EUC-KR) 코드로 0xB0A1 이라는 코드를 가지고 있습니다.
char ar[] = '가';
는
char ar[2] = { 0xB0, 0xA1 };
이라는 거죠. 그래서 a[0]을 찍으면 0xB0, a[1]을 찍으면 0xA1 이 나오고, 0xffffff 가 붙는 건
char로 0xB0, 0xA1은 음수고, printf에 인자로 넘어가면서 int로 확장되면서 0xffffff가 붙는 듯 하네요
(unsigned char)0xB0 = (char)-0x50 = (int)-0x50 = (unsigned int)0xFFFFFFB0
이런 느낌?
unsigned char ar[2] = '가';
이렇게 하면 B0, A1 이 찍히지 않을까 싶습니다.
우왕~ 감사합니다
아 unsigned가 아니라서 사이즈가 늘어난거군요
답변감사합니다
-------------------------
내 악마를 영혼에게 팔아넘기다