printf("ㄱ: %d \n", 'ㄱ'); // 42145 printf("ㅎ: %d \n", 'ㅎ'); // 42174 printf("%c \n", 42145); // ?물음표 뜨면서 안되는데이거 왜 이런거에요? ㅜㅜ
위에 두 놈은 암시적으로 (unsigned int)나 (int)로 캐스팅을 해주는 것 같고 아래는 안해주는 것 같은데
거에요->거예요 (받침 있으면 이에요 없으면 예요 이로 끝나면 받침 없으므로 예요 요 떼서 말 되면 에요 아니에요는 예외 인명엔 예요(예 : 길동이예요) 성까지 쓰면 이에요(예 : 홍길동이에요)) [리듬 맞춤법 봇♬]
char은 1바이트(-128~127)이다
한글은2바이트라서 저리해서 찍히냐?
"ㄱ"을 보면 2개의 char 문자가 합쳐져서 ㄱ을 만든다
printf("%c%c\\n", "ㄱ"[0], "ㄱ"[1]);하면 ㄱ 나올거다.
안돌려봐서 모르겠지만
visual studio intellisense 기능으로 확인해보면 'ㄱ'은 char형이 아니라 (int)(-23391)로 쓰고 있음을 확인 할 수 있다. %d로 찍었을 때 값이 나오는건 그게 이유
한 칸에 한 글자를 담고 싶으면 char이 아니라 wchar(유니코드 문자, 2바이트)를 사용하면 된다