デバッガを使うと、プログラムのデバッグ実行中に、そこで使われている式や変数の値を確認することができます。そのような機能を使うとデバッグが進みますが、環境によってはデバッガが使えないときもあります。そのような状況で変数の値を知るためには、printfを使って値を出力する方法が使えます。
これまでのサンプルプログラムでもprintfを使って値を確認してきました。ここでは、printfの使い方についてもう少し詳しく説明しておきます。
printfを使うときは、次のように書くことになっています。
printf(<書式文字列>, <値>...);
書式文字列とは、値をどのように出力するかを制御するための書式を指定する文字列のことです。これを指定することにより、書式文字列の後に続く値を整形することができます。書式文字列の中に “%”で始まる指定があると、その位置に対応する値が出力されます。
「32」という整数値を表示する際に、これを数値とみなして数字で表示するのか、文字コードの値とみなして文字で表示するか、指定する必要があります。つまり、ある値を表示するには、さまざまな型を意識する必要があります。これを指定するために、書式の指定方法にもさまざまなやり方があります。ここでは代表的なものだけ示します。もっと必要な場合は、そのつど調べてみてください。
書式 | 出力 | |
---|---|---|
%% | "%" 自体を出力 | |
%d %i | int型の値を10進表記に変換して出力 | |
%o | unsigned int型の値を8進表記(o)に変換して出力 | |
%u | unsigned int型の値を10進表記(u)に変換して出力 | |
%x %X | unsigned int型の値を小文字16進表記(x)、大文字16進表記(X)に変換して出力 | |
%f %F | double型の値を10進表記に変換して出力 | |
%e %E | double型の値を指数表記("5.0e-2" のような書き方)に変換して出力 | |
%c | int型の値をunsigned char型に変換して、その文字を出力 | |
%s | 文字列を出力 | |
printfの出力書式 |
コメントについては、すでにいくつかのサンプルで利用しています。
コメントはソース プログラム中に書かれるもので、プログラムの説明をソースコード中に記載したり、プログラムの一部を一時的に使わないようにするときに使います。
Cにおけるコメントは2種類あります。1つめは、“/*”で始まり、“*/”で終わるものです。このコメントは複数の行に渡ったコメントも書けます。もう1つは、“//”で始まり、行末で終わるものです。
int a; // 行末までがコメントです。 a = (1 + 10) * 5; /* コメントです。次の行まで続いています。 ここもコメントです。 */ printf("a : %d\n", a);
“/*”が現れると、次に “*/”が現れるまで、すべてコメントと見なされます。その間に “//” を書いても、“//”それ自体が単なるコメントの一部分となります。同様に、“//”が現れると、そこから行末までがすべてコメントと見なされますから、“//”以降の同一行内に“/*”や“*/”を書いても、コメントの一部分になるだけです。
ところで、“//”で始まるコメントはC99において導入された仕様です。したがって仕様としては新しい部類に入ります。しかし現在においては、ほぼすべてのCコンパイラがこの形式のコメントをサポートしています。さらに、古いコンパイラでC99をサポートしていないものでも、“//”で始まるコメントだけはサポートしているというケースがあります。そういうものの中には、コンパイルオプションで有効にしなければならないものもありますが、いずれにしろ大抵のCコンパイラで使えると考えて良いでしょう。
コメントにはどのような内容を書けば良いでしょうか。プログラムを書き始めたころは、よく分からずに、1行ずつ処理の内容を書くことが多いはずです。学習をしている最中は、各行でどんな処理をしているのか理解できていないわけですから当然のことなのですが、製品開発ではそういったコメントは必要がありません。
例えば「printf("\n");」に対して、「改行をコンソール画面へ出力」といったコメントをつける必要はありません。プログラムコードを見れば分かることです。これが、「プログラム終了前に必要なコンソール画面への改行出力」のように理由が書かれたコメントであれば意味がでてきます。コメントは、プログラムコードだけから読み取ることが難しく、プログラムの動作を決める重要な内容について、書くようにしましょう。
これまで出てきたプログラムには、かならず「main」と書かれた行があります。プログラムはここから始まり、波かっこ“{}”で囲まれた文が実行されます。これをmain関数(*2)と呼びます。
なお、Visual C++ではmainではなく_tmainになっていますが、mainと_tmainは同じものと考えてかまいません。
(*2) 関数、およびmain関数については、今後の連載で詳しく解説します。
Copyright © ITmedia, Inc. All Rights Reserved.