C와 C++에서 문자형 데이터는 내부적으로 ASCII 값으로 저장됩니다. 따라서 단일 문자를 정수 형태로 출력하면 해당 문자의 ASCII 값이 그대로 표시됩니다. 하지만 작은따옴표 안에 두 개 이상의 문자를 넣어 출력하려고 하면 다소 생소한 숫자가 출력됩니다.
다음 예제 프로그램을 통해 그 원리를 확인해 보겠습니다.
예제 코드
#include <stdio.h>
int main() {
printf("%d\n", 'A');
printf("%d\n", 'AA');
printf("%d\n", 'ABC');
}실행 결과
65 16705 4276803
문자 'A'의 ASCII 값은 65이므로 첫 번째 출력은 65, 즉 2진수 01000001입니다. 두 번째 출력인 'AA'는 16705가 나오는데, 이는 각 문자의 ASCII 값 65(01000001) 두 개를 비트 단위로 이어 붙여 하나의 정수로 해석한 결과입니다. 같은 방식으로 세 번째 출력인 'ABC'는 01000001 01000010 01000011에 해당하는 4276803이 됩니다.
참고로 이러한 다중 문자 상수(multi-character constant)의 값은 C 표준에서 구현 정의(implementation-defined)로 규정되어 있기 때문에, 컴파일러나 플랫폼에 따라 결과가 달라질 수 있습니다. 따라서 실제 코드에서는 가독성과 이식성을 위해 단일 문자 상수나 문자열 리터럴을 사용하는 것이 바람직합니다.