前回の宿題
以下のプログラムを実行したとき、
1) 出力内容を予想してください。
2) 実際に「coding ground」で実行して出力結果を確認してください。

新人Y子
7行目のprintf命令がよくわかりませんでしたので、解説をお願いします。

しげちゃん先生
まず最初に、今までprintfはシステムで用意された「命令」と表現していましたが、呼び出し方は通常の関数と全く一緒なんです。
ですので、printfについては、今後「命令」ではなく、「関数」と呼ぶことにしますね。

新人Y子
はい。

しげちゃん先生
さて、printfは「関数」ですので「引数」が定義されています。
以下は、printfの引数定義です。


新人Y子
このprintfの引数の定義はどこに書かれているのでしょうか?

しげちゃん先生
「stdio.h」ファイルの中に記載されています。

新人Y子
なるほど!includeする意味が分かってきました。
includeについては、新人Y子プログラミングのお部屋8 で説明してもらいましたね。

しげちゃん先生
はい。
ちなみに、関数の引数定義のことを、「プロトタイプ宣言」といいます。

新人Y子
printfのプロトタイプ宣言の引数、う~ん・・・

暗号のようで意味がよくわからないです。
そもそも、printfに引数は何個あるのでしょうか?

しげちゃん先生
引数の境目はカンマですので、カンマで分離すると、printf関数の引数が、何個あるのか分かります。
1個目が、「const char * restrict format」
2個目が、「…」

新人Y子
ということは、printf関数の引数は2個という事ですか?

しげちゃん先生
違います(が、惜しいです)
引数を説明していきますね。

しげちゃん先生
1個目の「const char * restrict format」の引数の型は、「文字列型」を意味します。
7行目のprintf関数呼び出しの “%d + %d = %d” の文字列に該当します。

しげちゃん先生
2個目の「…」は、0個以上の可変の引数を指定できることを意味します。
7行目のprintf関数呼び出しでは、3個「a, b, c」引数を渡しています。

新人Y子
という事は、printf関数は、最低1個の引数が必要という事ですね。

しげちゃん先生
その通りです。

新人Y子
では、今回何で4つもの引数をprintfに渡したのでしょう?

しげちゃん先生
それは、また次回解説します。

テクトレージマン
次回に続く

新人Y子プログラミングのお部屋の別記事

0