【独学C言語入門⑤】printf

printfで変数を表示してみます。以前の回でprintfは使ったじゃないかと思われる方もおられるかもしれませんが、今回はC言語が他の言語と比較してかなり面倒な部分が見えてきます。

まずは前回ご紹介した「Hello, World」で復習します。次のように記述する必要がありました。

prntf("Hello, World");

次に整数型(int)の変数を表示する場合はこのようになります。

int a = 5;
printf("%d\n", a);  //\nは改行

//実行結果
//5

いきなり謎の「%d」出てきました。%dというのはどのようなフォーマットでデータを表示するかを指定しています。この %d は英語で「format specifier」と呼びます。なぜ英語表記を最初にお伝えしたかというと日本語での呼び方が明確に決まっていないためです。「フォーマット指定子」「変換指定子」「書式指定子」など呼ばれるのですが、このC言語入門ではフォーマット指定子で統一したいと思います。フォーマット指定子には次の種類があります。

フォーマット演算子 意味
%d 整数(10進数)
%f 実数(小数点有効な10進数)
%c 文字(’ ‘で囲んだ半角1文字)
%s 文字列(” “で囲む)

実際にフォーマット指定子を使用して整数型、実数型、文字型、文字列型の変数をprintfで表示してみます。失敗した場合も一緒にご紹介しますが、注意して見てもらいたいのはchar型の文字型です。

#include <stdio.h>

main()
{
    int a = 5;
    float b = 1.2;
    char c = 'A';
    char d[6] = "apple";

    //int(整数型)を%dで表示
    printf("a = %d\n", a); 

    //float(実数型)を%fで表示
    printf("b = %f\n", b);

    //char(文字型)を%cで表示
    printf("c = %c\n", c); 

    //char(文字型)を%dで表示
    printf("c = %d\n", c); 

    //char(文字列)を%sで表示
    printf("d = %s\n", d);

    printf("失敗");

    //フォーマットの指定を失敗
    //int(整数型)を%fで表示
    printf("a = %f\n", a);

    //float(実数型)を%dで表示
    printf("b = %d\n", b);
}

//右が切れたら左にスワイプしてください

intを 実数(%f) 、floatを整数(%d)で表示しようとすると分かりやすく失敗しました。しかし、charを整数や文字で表示するのは2パターンとも正しい使い方になります。charを文字(%c)で表示すると変数に代入した「A」、整数(%d)で表示しようとするとAを数字(アスキーコード)で表した「65」が表示されました。このようにcharを使用する時にはどのフォーマット指定子の使い方が重要になります。

最後にエスケープシーケンスについてご説明します。printfの中で使用されている「\n」のことです。このサイトや多くのエディタでは「\n」と表示されてしまいますが、「¥n」が正式な表記になり特殊な命令を行う時に使用されます。まずは「\n = ¥n(改行)」だけで十分かと思います。ちなみに僕は「¥n」以外を今まで使用したことはありません。

エスケープシーケンス 機能
¥0 NULL文字
¥b バックスペース
¥t タブ
¥n 改行(LF)
¥r 復帰(CR)

他のプログラミング言語を習得されている方からすると、面倒なことに驚くかと思いますが、フォーマット指定子は非常に重要なのでしっかりと理解をお願いします。

独学C言語入門一覧に戻る