TIL/2025

printf("%c", 2)가 '2'가 아닌 이유

고무 오리 2025. 12. 26. 15:07
728x90

1. 핵심 컨셉: "%c 는 번호표다"

컴퓨터는 모든 글자를 번호표(ASCII 코드) 로 관리합니다. printf 에서 어떤 서식 지정자를 쓰느냐에 따라 숫자를 보는 눈이 달라집니다.

  • %d : 숫자  그대로 출력 (2 → 2)
  • %c : 숫자를 번호표 로 해석해서 해당 칸의 문자를 출력 (2 → ??)

2번 번호표 는 '글자 2'가 아니라, 화면에 보이지 않는 제어 신호 이기 때문에 아무것도 출력되지 않는 것입니다.

 

2. 해결 방법: "기준점 더하기"

우리가 원하는 글자 '2' 는 번호표 50번 에 있습니다. 하지만 이 번호를 외울 필요는 없습니다. 모든 숫자 글자는 '0' 부터 순서대로 서 있기 때문입니다.

  • '0' 의 번호표 = 48번
  • 숫자 2 + '0' (48번) = 50번 (글자 '2'의 위치!)

3. 한 줄 요약 코딩 공식

숫자를 문자로 바꾸고 싶다면 딱 하나만 기억하세요. "+ '0'" 만 붙이면 됩니다.

int n = 2;

printf("%d", n);      // 결과: 2 (숫자로 출력)
printf("%c", n + '0'); // 결과: 2 (문자로 출력)

💡 정리하자면?

  1. %c 는 숫자를 문자의 주소(번호표) 로 읽는다.
  2. 진짜 숫자를 문자로 보여주려면 '0' 이라는 출발점 을 더해줘야 한다.
  3. 반대로 문자를 숫자로 바꿀 때는 - '0' 을 하면 된다.
728x90

'TIL > 2025' 카테고리의 다른 글

MCP가 무엇인지?  (1) 2025.12.21
[Error] Your branch and 'origin/feature-1' have diverged  (0) 2025.12.10
Requirement yogi의 traceability  (0) 2025.12.10
Hash와 Digital Signature  (0) 2025.12.09
Confluence 문서 상태 관리 feat. Comala  (0) 2025.11.07