🇯🇵 日本語 | 🇺🇸 English
広告スペース

第4回 printf

C言語のprintf関数の使い方。書式指定子(%d, %f, %s ...)を表とインタラクティブなテスターで解説。

📖 このページで覚えること
✅ 最低限ここだけ覚える
  • printf("...%d...\n", x); で値を表示
  • %d=int, %f=double, %c=char, %s=文字列
  • %f はデフォルトで小数6桁 → %.2f で小数2桁など桁数を制御
  • 書式指定子は変数の型と合わせる
⭐ 余裕があれば読む
  • 幅・精度指定 (%8.2f, %-8.2f, %08.2f)
  • 桁落ちは切り捨てではなく四捨五入される
  • 極端な値は %e(指数) や %g(自動)
  • %x(16進), %o(8進)、左寄せ %-10s
🎬
この講座を動画で見る(約7分)
スライド解説 + 音声ナレーション

printf文 ― 文字列を表示する

printfは文字列(文字の並び)を表示する処理です。
\n は改行を意味する特殊文字です。
printf("Hello World!\n");       // 文字列を表示
printf("5 x 6 = %d\n", 30);    // 数値を埋め込んで表示
printf("result = %d\n", hensu); // 変数の値を表示

書式指定子 ― %d と %f

printf文で変数の値を表示するとき、変数の型に合った書式指定子を使う必要があります。
整数 → %d
int a = 5;
printf("%d", a);5

桁揃え: %2d" 5"%4d" 5"
実数 → %f
double b = 5.23;
printf("%f", b);5.230000

桁指定: %5.2f" 1.52" (全5桁、小数2桁)
型と書式が合わないと正しく表示されません! int型に%fを使ったり、double型に%dを使うと0や意味不明な値が出ます。

複数の変数を1つのprintfで表示

printf の文字列の中に % を並べて、カンマの後ろに表示したい変数を順番通りに並べるだけ。1つ目の % に1つ目の変数、2つ目の % に2つ目の変数…と対応します。
int age = 25;
double h = 170.5;

printf("年齢 %d 歳、身長 %.1f cm\n",
    age, h);

// 出力: 年齢 25 歳、身長 170.5 cm
並び順がすべて
1つ目の %dage、2つ目の %.1fh。書いた順に埋まる。
⚠️ 個数を必ず一致
% の数 = カンマで渡す変数の数。ズレるとゴミ値が出る。
💡 式の結果も渡せる
変数だけでなくも書けるので、計算結果をそのまま出せる。
printf("%d + %d = %d\n", a, b, a+b);3 + 5 = 8

doubleの小数点以下の桁数を制御する

%fデフォルトで小数点以下6桁まで出ます。3.14 を出すだけで 3.140000 になって見づらい ― そんなときは 精度指定で桁数を変えられます。
基本構文: %.Nf ― 小数点以下 N 桁
書式 意味 b = 3.14159 の出力
%fデフォルト (小数6桁)3.141590
%.0f整数部分のみ(四捨五入3
%.1f小数1桁(四捨五入)3.1
%.2f小数2桁(よく使う・通貨やパーセント)3.14
%.4f小数4桁(物理・科学計算向け)3.1416
%8.2f全8桁幅で右揃え、小数2桁"    3.14"
%-8.2f全8桁幅で左揃え、小数2桁"3.14    "
%08.2f全8桁幅、0埋め、小数2桁"00003.14"
%W.NfW = 全体の幅(小数点も含む)、N = 小数点以下の桁数。どちらか片方だけの指定もOK(%.3f%10f
✂️ 切り捨てではなく「四捨五入」
double x = 3.145;
printf("%.2f", x);3.15(切り上げ)

double y = 3.144;
printf("%.2f", y);3.14(切り捨て)

桁を落とすときは四捨五入されるので、元の値とは微妙にズレます。
📊 大きな・小さな数は %e や %g
double v = 0.00000123;
printf("%.2f", v);0.00(情報が消える!)
printf("%.2e", v);1.23e-06(指数表記)
printf("%g", v);1.23e-06(自動で見やすい方)

非常に大きい/小さい値は %e%g を使うと情報が失われにくい。
💡 使い分けの目安

書式指定子テスター

表示結果

自分で書いてみよう ― printf

printfで様々な書式指定子を試してみましょう。
io_demo.c
出力
「実行」を押してください...
💡 こんなことも試してみよう
広告スペース

関連する講座

入門編
第3回 変数
C言語の変数とは?int, double, charの使い方を図解で解説。
入門編
第6回 確認問題(変数・printf)
C言語の変数とprintfの理解度を確認するクイズ。
入門編
第7回 確認問題(scanf)
C言語のscanfの理解度を確認するインタラクティブなクイズ。
← 前の講座
第3回 変数
次の講座 →
第5回 scanf ― キーボード入力

確認クイズ

この講座の理解度をチェックしましょう!

Q1. printf("%d", 10); の出力は?

%d
10
10.000000

%d は整数を表示するフォーマット指定子です。10 がそのまま表示されます。

Q2. scanf で整数を読み込むとき正しいのは?

scanf("%d", x);
scanf("%d", &x);
scanf("%d", *x);

scanf では変数のアドレスを渡す必要があるため、&(アドレス演算子)を付けます。

Q3. printf("%.2f", 3.14159); の出力は?

3.14
3.14159
3.1

%.2f は小数点以下2桁まで表示するフォーマット指定子です。3.14159 は 3.14 と表示されます。

この記事をシェア
X(Twitter)でシェア Facebookでシェア LINEで送る はてブ

この講座の理解を深めるおすすめ書籍

サイトで動きを理解し、書籍で演習量を補うと効果的です

📘
苦しんで覚えるC言語
MMGames 著
初心者向けの定番入門書。丁寧な解説で基礎を固められます。
Amazonで見る
📗
新・明解C言語 入門編
柴田望洋 著
図解が豊富で、演習問題も充実。大学の教科書としても採用多数。
Amazonで見る
📙
プログラミング言語C 第2版
B.W.カーニハン, D.M.リッチー 著
通称K&R。C言語の原典。基礎を終えた後のステップアップに最適。
Amazonで見る

※ 上記リンクはアフィリエイトリンクです。購入によりサイト運営を支援いただけます。