/*01*/ #include <stdio.h> /* printf のために必要 */
/*02*/
/*03*/ main()
/*04*/ {
/*05*/ printf("Hello, world.\n");
/*06*/ printf("%d + %d = %d です。\n", 2, 3, 2 + 3);
/*07*/
/*08*/ return 0;
/*09*/ }
/*10*/
printf の第一引数の文字列では、「\」と「%」は特殊な文字として扱われるので、これらを表示させたいときはそれぞれ「\\」、「%%」としなければいけません。例えば、
printf("C:\\Windows");
また、文字列の途中で改行してはいけません。例えば
printf("Hello,
World.");
printf("Hello,");
printf("World.")
printf("Hello,\nWorld.\n");
| \a | 警告(ベル) |
| \b | バックスペース |
| \f | 改項 |
| \n | 改行 |
| \r | 復帰 |
| \t | 水平タブ |
| \v | 垂直タブ |
| \\ | 円記号 |
| \? | 疑問符 |
| \' | シングルクウォーテーション |
| \" | ダブルクウォーテーション |
printf 関数は必要に応じていくつでも引数をとることが出来ます。
printf("%d + %d = %d です。\n", 2, 3, 2 + 3);
2 + 3 = 5 です。
| 符号付整数 | |
| %d | システムに依存した範囲の符号付整数 |
| %ld | 符号付32bit整数 |
| %lld | 符号付64bit整数(C99) |
| 符号なし整数 | |
| %u | システムに依存した範囲の符号なし整数 |
| %lu | 符号なし32bit整数 |
| %llu | 符号なし64bit整数(C99) |
| 符号なし整数の8進数、16進数表示 | |
| %o | システムに依存した範囲の8進数 |
| %lo | 符号なし32bit整数を8進数で表示 |
| %x | システムに依存した範囲の16進数 |
| %lx | 符号なし32bit整数を16進数で表示 |
| 浮動小数点数 | |
| %f | 32bit(単精度)浮動小数点数 |
| %lf | 64bit(倍精度)浮動小数点数 |
| %e | 32bit(単精度)浮動小数点数を指数形式で表示 |
| %le | 64bit(倍精度)浮動小数点数を指数形式で表示 |
| 文字 | |
| %c | 一文字 |
| %s | 文字列 |
▲システムに依存した範囲とは、例えば16bit環境なら16bit整数、32bit環境なら32bit整数となる。
▲符号付Nbit整数とは「-2の(N/2)乗~2の(N/2)乗-1」の範囲。例えば32bitなら「-2の16乗~2の16乗-1」で「-2,147,483,648 ~ 2,147,483,647」となる。
▲符号なしNbit整数とは「0~2のN乗-1」の範囲。例えば32bitなら「0~2の32乗-1」で「4,294,967,295」となる。
▲浮動小数点数の指数形式表示は「1.234E+3」や「1.234E-3」のような形になり、前者は「1.234×10の3乗」を、後者は「1.234×10の-3乗」を意味する。
▲32bit浮動小数点数の範囲は「3.4E±38」、64bit浮動小数点数の範囲は「1.7E±308」となる。
さらに「%」と「d」などの文字の間に修飾子をはさんで表示形式を制御することが出来ます。例えば、「%5d」のように数値を挟むとその数値分の桁の中に右寄せで表示されます。もし「%5d」に対して「123」を表示させたら「[][]123([]は空白)」と表示されます。さらに「%05d」のように「0」をつけると空白部分を「0」で埋め、「%-5d」のように「-」をつけると左寄せになります。小数に対しては「%5.3f」や「%.3f」のようにすると、小数点以下を指定の桁数分だけ表示します。この例だと、小数点以下3桁まで表示されることになります。このように printf は意外と奥が深く、細かい点を言えば他にもいくつかあるのですが、とりあえず普段はここで説明した内容だけで事足りると思います。もしさらに詳しく知りたい方は他の参考書などをご覧ください。
なお、C言語では一文字を扱う場合「'a'」のようにシングルクウォーテーションで囲みます。一文字であっても「"a"」とした場合は文字列として扱われる点に注意してください。文字、文字列については別のところで詳しく解説します。