변환 지정자 — printf()의 %d·%f·%c·%s와 자료형 일치 | 기초 C언어 3.2.1
기초 C언어Chapter 03 상수 › Section 02 printf() 함수의 서식 지정
3.2.1 변환 지정자
printf의 f가 formatted, 곧 ‘형식을 갖춘’이라는 뜻이라고 했음. 그 형식이 어디서 오는지가 이번 편. 값이 들어갈 빈자리를 미리 잡아 두는 표시.
01변환 지정자란교재 44p
- 변환 지정자(Conversion Specifier) — printf의 출력 문자열 안에서 “이 위치에 특정 종류의 값을 채워 넣어 달라”고 알려 주는 자리 표시자.
- 쉽게 말하면 — 값이 들어갈 빈자리를 미리 잡아 두는 표시.
- 약속 — 모든 변환 지정자는 % 기호로 시작.
- 앞의 규칙을 손봐야 함 — “큰따옴표 안의 글자는 그대로 나오고 예외는 \n 하나”라고 했지만, 이제 예외가 하나 더. %로 시작하는 표시는 적은 그대로 찍히지 않고 그 자리에 값이 들어감.
빈칸 채우기 놀이처럼
- “제 이름은 ___이고, 나이는 ___살이다.”
- 이름도 나이도 아직 정해지지 않았지만, 어떤 종류의 말이 들어갈지는 이미 정해져 있음 — 첫 칸은 문자열, 둘째 칸은 숫자.
- 그 종류를 미리 알려 주는 약속 기호가 변환 지정자.
02실제 코드에서는교재 44p
그림 3.2 | 변환 지정자의 예시
printf("제 이름은 %s이고, 나이는 %d살입니다.", name, age);
RESULT
제 이름은 철수이고, 나이는 20살입니다.
- %s — 문자열 값을 채워 넣을 자리.
- %d — 정수 값을 채워 넣을 자리.
- 뒤에 붙은 name, age — 값 자체가 아니라 값을 담아 둔 상자의 이름. 그 상자에 든 값을 꺼내 빈칸에 넣으라는 뜻. 상자를 만드는 방법은 4장.
03주요 변환 지정자교재 45p
| 지정자 | 의미 | 상수 예시 | 관련 자료형 |
|---|---|---|---|
| %d | 10진수 정수 | 100 -5 | int |
| %f | 실수 | 3.14 -0.05 | double (float는 double로 승격) |
| %c | 단일 문자 | 'A' 'b' | char (호출 시 int로 승격) |
| %s | 문자열 | "Hello" | 문자 배열 |
- 앞 절의 네 상수와 하나씩 대응 — 정수형 · 실수형 · 문자 · 문자열.
- 맨 오른쪽 자료형 칸은 4장에서 배움. 지금은 이런 이름들이 짝지어져 있다는 것만.
04네 가지를 한꺼번에교재 45p
CODE 3.1 | 여러 종류의 상수 출력
#include <stdio.h>int main(void) {printf("올해는 %d년이다.\n", 2025);printf("원주율은 약 %f이다.\n", 3.14);printf("알파벳 %c는 %s 단어의 첫 글자이다.\n", 'C', "Cat");return 0;}
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
짝을 어기면
// %d는 정수를 위한 지정자인데, 실수 3.14를 출력하려고 함printf("잘못된 출력: %d\n", 3.14);
- 자료형이 맞지 않으면
- ① 컴파일러가 경고할 수 있음 — 다만 경고 여부는 컴파일러와 설정에 따라 달라짐
- ② 실행 결과는 정의되지 않은 동작 — 엉뚱한 값이 출력되거나 프로그램이 비정상 종료될 수 있으며, 특정 결과를 보장할 수 없음. 실수가 정수로 자동 변환되는 것이 아님
- 그래서 — 숫자가 태연히 찍혀 있어도 믿으면 안 됨. 경고가 보이면 넘기지 말고 지정자부터 확인.
- 왜 그런지는 4장 자료형에서 다룸.
이 절의 핵심 정리
- 자리 표시자 — 변환 지정자는 출력 문자열 안에서 값을 채워 넣을 자리다
- 모두 %로 시작 — %d 정수 · %f 실수 · %c 문자 · %s 문자열
- 빈자리는 큰따옴표 안, 넣을 값은 큰따옴표 뒤에 적는다
- %f는 기본으로 소수점 아래 여섯 자리를 채워 출력한다
- 자료형 일치 — 어기면 정의되지 않은 동작이므로 출력 결과를 믿을 수 없다. 컴파일러가 경고하지 않아도 올바른 코드는 아니다
강의 자료3.2.1 변환 지정자
1 / 10
번호를 누르면 해당 장으로 바로 이동합니다 · 방향키 ← → 로도 넘길 수 있습니다
다음 절 · 3.2.2 제어 문자 교재 47p~48p — \n처럼 화면에 찍히지 않고 줄바꿈 같은 일을 시키는 기호들을 살펴봅니다.
더 자세한 내용은 교재에서
이 글은 『기초 C언어』 44p~46p의 내용을 강의 영상에 맞춰 핵심만 간추린 요약입니다. 각 개념의 상세한 설명과 예제, 실습 코드, 임용시험 기출문제 풀이는 교재에서 다루고 있습니다.
댓글
댓글 쓰기