【C言語入門】printfマスター:計算結果を表示する「書式指定子」の役割
前回の「Hello World」に続き、今回はコンピュータの本領である「計算」の結果を表示させてみます。C言語で数値を扱う際に避けて通れないのが、printf関数の書式指定(フォーマット)という仕組みです。
1. 実践:計算結果を表示するプログラム
【 手を動かして確認 】 新しく `calc.c` というファイルを作成し、以下のコードを記述します。ただの文字列ではなく、実行時に計算が行われ、その結果が画面に表示されます。
#include <stdio.h>
int main(void) {
// 「%d」という穴に、1+1の結果を流し込む
printf("計算結果は %d です\n", 1 + 1);
return 0;
}
int main(void) {
// 「%d」という穴に、1+1の結果を流し込む
printf("計算結果は %d です\n", 1 + 1);
return 0;
}
2. コンパイルと実行結果
【 ターミナルの動き 】 ターミナルでビルドして実行します。プログラムの中に「2」という数字は書いていませんが、実行時に計算された結果が出力されることを確認してください。
% clang calc.c -o calc
% ./calc
計算結果は 2 です
% ./calc
計算結果は 2 です
3. 【重要解説】printfの「書式指定子」とは?
【 ここが仕組みのキモ 】 printfの「f」は **formatted(書式化された)** の略。単に表示するだけでなく、データをどのような形式で表示するかを指定できるのが最大の特徴です。ここで使った **`%d`** は、その中核となる「データの予約席」の役割を果たします。
★ %d の正体
・役割:10進数の整数(Decimal)を表示するための「型抜き」のようなもの。
・対応関係:カンマの後に書いた「1 + 1」という計算結果が、この `%d` の場所に自動的に流し込まれます。
★ なぜ直接数字を書かないのか?:
実際の開発では、計算の内容が複雑になったり、ユーザーの入力によって値が変化したりします。「ここは整数の場所」と事前に決めておくことで、どんな値が来ても正しく表示できる柔軟性が生まれます。
・役割:10進数の整数(Decimal)を表示するための「型抜き」のようなもの。
・対応関係:カンマの後に書いた「1 + 1」という計算結果が、この `%d` の場所に自動的に流し込まれます。
★ なぜ直接数字を書かないのか?:
実際の開発では、計算の内容が複雑になったり、ユーザーの入力によって値が変化したりします。「ここは整数の場所」と事前に決めておくことで、どんな値が来ても正しく表示できる柔軟性が生まれます。
4. 応用:書式とデータの対応ルール
【 ミスを防ぐ視点 】 printfの中に複数の `%d` を置くことも可能です。その場合、左から順番にデータが割り当てられます。この「左からの順番」を意識することが、表示バグを防ぐ基本です。
// 2つの穴に、順番に値を流し込む
printf("%d と %d を足すと %d です\n", 10, 20, 10 + 20);
[ 出力イメージ ]
10 と 20 を足すと 30 です
printf("%d と %d を足すと %d です\n", 10, 20, 10 + 20);
[ 出力イメージ ]
10 と 20 を足すと 30 です
5. 理解度チェック!練習問題
【 チャレンジ 】 今回学んだ内容を復習しましょう。以下のプログラムの【空欄】に入る正しいコードはどれでしょうか?
#include <stdio.h>
int main(void) {
// 「3 × 3 = 9」と表示させたい
printf("3 * 3 = 【 空欄 】\n", 3 * 3);
return 0;
}
int main(void) {
// 「3 × 3 = 9」と表示させたい
printf("3 * 3 = 【 空欄 】\n", 3 * 3);
return 0;
}
選択肢:
A. %s
B. %d
C. %f
D. &d
正解と解説を見る
正解:B. %d
計算結果(9)は整数なので、Decimal(10進数)を意味する「%d」を使用するのが正解です。%sは文字列、%fは小数を表示する際に使用します。
PR