書式制御

これは多くの人が一度は疑問に思った事があると思います。
「printfの「f」ってなに?」
私も昔、ずっと疑問に思い続けていました。

その答えは... format の略です。
このformatとは「書式付き」ということを意味しています。

例えば、puts関数が、文字を表示するだけなのに対し、
printf関数は、変数の値を表示させることなどが可能でしたね。

今まで、わけもわからず %d 等といったものを使用してきましたが、
ようやく、今になってそれについてやっていきます。

printf("%d\n",1);

上のようなソースを書くと、どう表示されるでしょうか?
画面には 1 と、表示されます。
また、次のようなソースを書くとどうなるでしょうか?

printf("%d%d%d\n",1,2,3);

少し解りにくいかもしれませんが、 123 と表示されます。
ここまでくると、少し解ってもらえたでしょうか?
%d と書いた部分が、後でコンマで区切った「数値」を「数字」に変換して表示されます。


「数値」と「数字」の違いについて少し書きます。
コンピュータは全てのものを「数値」として扱います。
よって、文字も数値として表現されます。
たとえば 'A' は 65 、 'B' は 66 と表されています。

一方、画面上に表示されている'1'や'2'というのは「数字」です。
数字もコンピュータの内部では数値として扱っています。
例えば '1' は 49 、 '2' は 50 と表されています。

ここら辺は、文字コードについて勉強すれば詳しくわかります。

この、 %d のように、表示時に置き換えられる、特殊な文字を、
書式制御文字」といいます。
よく使う書式制御文字の一覧を見てみましょう。

書式制御文字役割
%d数値を10進数の数字に置き換え
%x数値を16真数の数字に置き換え
%c数値を文字コードとして置き換え
%s数値列を文字列に置き換え

とりあえず、今のところは %d だけが使えたら十分です。
それでは、復習を兼ねたソースを読んでみましょう。

#include <stdio.h>

int main()
{
  int i=1;
  int j=3;
  printf("%d+%d=%d\n",i,j,i+j);
  return 0;
}

実行結果は予測できたでしょうか?
もし予測できたらとりあえず今はそれで十分です。
(わからなければコンパイルしてみてください。)