변환 지정자 — printf()의 %d·%f·%c·%s와 자료형 일치 | 기초 C언어 3.2.1

기초 C언어Chapter 03 상수 › Section 02 printf() 함수의 서식 지정

3.2.1 변환 지정자

printf의 f가 formatted, 곧 ‘형식을 갖춘’이라는 뜻이라고 했음. 그 형식이 어디서 오는지가 이번 편. 값이 들어갈 빈자리를 미리 잡아 두는 표시.

교재 수록 위치
교재
『기초 C언어』 · 2026년 개정판 · 364쪽
단원
Chapter 03 상수 › Section 02 printf() 함수의 서식 지정
쪽수
44p ~ 46p3쪽
세부 내용
01 변환 지정자 — 1 변환 지정자란?44p · 2 주요 변환 지정자45p · 3 자료형 일치46p

01변환 지정자란교재 44p

  • 변환 지정자(Conversion Specifier)printf의 출력 문자열 안에서 “이 위치에 특정 종류의 값을 채워 넣어 달라”고 알려 주는 자리 표시자.
  • 쉽게 말하면 — 값이 들어갈 빈자리를 미리 잡아 두는 표시.
  • 약속 — 모든 변환 지정자는 % 기호로 시작.
  • 앞의 규칙을 손봐야 함 — “큰따옴표 안의 글자는 그대로 나오고 예외는 \n 하나”라고 했지만, 이제 예외가 하나 더. %로 시작하는 표시는 적은 그대로 찍히지 않고 그 자리에 값이 들어감.

빈칸 채우기 놀이처럼

  • “제 이름은 ___이고, 나이는 ___살이다.”
  • 이름도 나이도 아직 정해지지 않았지만, 어떤 종류의 말이 들어갈지는 이미 정해져 있음 — 첫 칸은 문자열, 둘째 칸은 숫자.
  • 그 종류를 미리 알려 주는 약속 기호가 변환 지정자.

02실제 코드에서는교재 44p

그림 3.2 | 변환 지정자의 예시
  1. printf("제 이름은 %s이고, 나이는 %d살입니다.", name, age);
RESULT
제 이름은 철수이고, 나이는 20살입니다.
  • %s문자열 값을 채워 넣을 자리.
  • %d정수 값을 채워 넣을 자리.
  • 뒤에 붙은 name, age — 값 자체가 아니라 값을 담아 둔 상자의 이름. 그 상자에 든 값을 꺼내 빈칸에 넣으라는 뜻. 상자를 만드는 방법은 4장.

03주요 변환 지정자교재 45p

지정자의미상수 예시관련 자료형
%d10진수 정수100 -5int
%f실수3.14 -0.05double (float는 double로 승격)
%c단일 문자'A' 'b'char (호출 시 int로 승격)
%s문자열"Hello"문자 배열
  • 앞 절의 네 상수와 하나씩 대응 — 정수형 · 실수형 · 문자 · 문자열.
  • 맨 오른쪽 자료형 칸은 4장에서 배움. 지금은 이런 이름들이 짝지어져 있다는 것만.

04네 가지를 한꺼번에교재 45p

CODE 3.1 | 여러 종류의 상수 출력
  1. #include <stdio.h>
  2. int main(void) {
  3. printf("올해는 %d년이다.\n", 2025);
  4. printf("원주율은 약 %f이다.\n", 3.14);
  5. printf("알파벳 %c는 %s 단어의 첫 글자이다.\n", 'C', "Cat");
  6. return 0;
  7. }
RESULT
올해는 2025년이다.
원주율은 약 3.140000이다.
알파벳 C는 Cat 단어의 첫 글자이다.
  • 규칙 하나가 보임 — 큰따옴표 에는 %로 빈자리만 잡아 두고, 큰따옴표가 끝난 뒤에 넣을 값을 적음.
  • 05줄은 빈자리가 둘 — 문자 상수 'C'와 문자열 상수 "Cat"이 앞에서부터 차례로 짝지어짐.
  • 3.14를 넣었는데 3.140000이 나온 이유%f는 따로 정해 주지 않으면 소수점 아래를 언제나 여섯 자리로 맞춰 출력함. 값이 바뀐 것이 아니라 남는 자리를 채워 보여 준 것. 반대로 더 긴 값이면 여섯 자리로 반올림.

05가장 중요한 규칙 · 자료형 일치교재 46p

출력할 값의 종류변환 지정자의 종류를 반드시 일치시켜야 함.

  • 100%d / 3.14%f / 'A'%c / "Hello"%s
짝을 어기면
  1. // %d는 정수를 위한 지정자인데, 실수 3.14를 출력하려고 함
  2. printf("잘못된 출력: %d\n", 3.14);
  • 자료형이 맞지 않으면
    • ① 컴파일러가 경고할 수 있음 — 다만 경고 여부는 컴파일러와 설정에 따라 달라짐
    • ② 실행 결과는 정의되지 않은 동작 — 엉뚱한 값이 출력되거나 프로그램이 비정상 종료될 수 있으며, 특정 결과를 보장할 수 없음. 실수가 정수로 자동 변환되는 것이 아님
  • 그래서 — 숫자가 태연히 찍혀 있어도 믿으면 안 됨. 경고가 보이면 넘기지 말고 지정자부터 확인.
  • 왜 그런지는 4장 자료형에서 다룸.

이 절의 핵심 정리

  1. 자리 표시자 — 변환 지정자는 출력 문자열 안에서 값을 채워 넣을 자리다
  2. 모두 %로 시작 — %d 정수 · %f 실수 · %c 문자 · %s 문자열
  3. 빈자리는 큰따옴표 , 넣을 값은 큰따옴표 에 적는다
  4. %f는 기본으로 소수점 아래 여섯 자리를 채워 출력한다
  5. 자료형 일치 — 어기면 정의되지 않은 동작이므로 출력 결과를 믿을 수 없다. 컴파일러가 경고하지 않아도 올바른 코드는 아니다
강의 자료3.2.1 변환 지정자 1 / 10

번호를 누르면 해당 장으로 바로 이동합니다 · 방향키 ← → 로도 넘길 수 있습니다
다음 절 · 3.2.2 제어 문자 교재 47p~48p — \n처럼 화면에 찍히지 않고 줄바꿈 같은 일을 시키는 기호들을 살펴봅니다.

더 자세한 내용은 교재에서

이 글은 『기초 C언어』 44p~46p의 내용을 강의 영상에 맞춰 핵심만 간추린 요약입니다. 각 개념의 상세한 설명과 예제, 실습 코드, 임용시험 기출문제 풀이는 교재에서 다루고 있습니다.

댓글

이 블로그의 인기 게시물

2007년 국가직 9급 기계일반 기출문제 풀이

2008년 국가직 9급 기계일반 기출문제 풀이

열역학의 개요 — 계·상태량·열과 일, 제1·제2법칙 | 기초 열역학 1.1