ルギア君とディアルガは箱をキノガッサのところに持っていった。
キノガッサ「ありがとう。中身を見てみますね。」
そういって、キノガッサは魔法を唱えた。
キノガッサ「, −−, . (ファギクンジェルバ、フォーディーンジェニー、ギクンメケボセ)」
すると、箱がひっくり返って、中に入っていたリンゴがテーブルの上に散らばった。
キノガッサ「6個かぁ・・・たりるかなぁ・・・? まあ、いいや。ありがとう。足りなかったらまたお願いする。*1」
ルギア君たちは研究室に戻っていった。
リザード「次は何の魔法を教えてあげようかな。うーん、・・・どうしようか。」
メタグロス*2「魔法はいったん終わりにするのか?」
ルギア君「うん。」
メタグロス「だったら、終わりにする魔法も言ってくれ!」
リザード「ああ、そうだ! 忘れてた! 僕自身は魔法が唱えられないから、魔法のことはよく頭から抜けちゃうんでね・・・」
ルギア君「早く教えてよ!」
リザード「えーっと、これだ! 唱えてみな。」
ルギア君「− . (ギッジョーン リーゲ)」
メタグロス「うむ。よろしい。始めと終わりをはっきりさせるのが、この城のマナーだからな。覚えておけよ。」
ルギア君「はい。」
まとめ
キノガッサが使った魔法を使うと、箱の中身を見ることができます。
こう書きます。
printf("%d\n", apple_box);
これは、[apple_box]の中身を(最初の) %d に埋め込んだ、"6\n" を画面に表示する魔法です。
*3
\n は「改行」を意味します*4。
"%d\n" はそうではないといけないということはないです。
たとえば、
printf("Hello, World!\n");
と書けば、
Hello, World!
と表示されます。
また、
printf("%d\n%d\n%d\n", apple_box, apple_box, apple_box);
と書けば、
6 6 6
と表示されます。
%d の数と 埋め込む箱の数 (この場合[apple_box])は同じにします。
箱の数が多い分には問題ありませんが、少ないとおかしなことになりますので注意しましょう。
前回作成したプログラムは一見正常に修了したように見えますが、きっと、メタグロスは怒っていることでしょう。
return 0;
これを、プログラムの最後に書くことで「魔法はこれで終わり」っていうのを示すことができます。
ちなみに、0 を 1 にすると、「魔法はこれで終わりだけど、実行中に何か問題があった」っていうことをメタグロスに伝えることができます。しかし、メタグロスにしてみれば「あっそう・・・」なので、見かけ上、何も変わりません。
というわけで、今回できたプログラムは
となります。
では、コンパイルの方法です。
次からは同じ方法なので、覚えてください。
Linux は今回も前回と同じ方法でできますので省略します。
以下は Windows での説明です。
Visual C++ 2005 を起動します。
[ファイル]→[新規作成]→[新しいプロジェクト]
「新しいプロジェクト」ダイアログが出てきます。
以下のように入力して、[OK]をクリックしてください。
[プロジェクトの種類]→[Visual C++]または[Win32]
[テンプレート]→[Win32 コンソールプロジェクト]
[プロジェクト名]→[Sample01-002] (次からはここを変えてください。)
[ソリューションのディレクトリを作成]のチェックをはずす
[場所]→[参照]→[C_Study]をダブルクリック→[開く]
そうすると、「Win32 アプリケーションウィザード」が出てきます。
[アプリケーションの設定]→[追加のオプション]→[空のプロジェクト]にチェックをつける
その後、[完了]をクリック。
「ソリューションエクスプローラ」の[ソースファイル]を右クリック→[追加]→[新しい項目]
すると、「新しい項目」ダイアログが出てきます。
以下のように入力して、[追加]をクリックしてください。
[カテゴリ]→[Visual C++]または[コード]
[テンプレート]→[C++ ソースコード (.cpp)]
[ファイル名]→[Sample01-002.c] (次からはここを変えてください。)
ビルドの手順は同じなので省略します。
ところが、ビルドすると、このようなメッセージが出てきます。
warning C4013: 関数 'printf' は定義されていません。int 型の値を返す外部関数と見なします。
この理由は次の章で解説します。
しかしながら、よくみると、「正常終了」になっています。
ということは実行することができます。
実行するときは今回から「デバッグ開始」ではなく「デバッグなしで開始」を使います。
実行してみると、たしかに、6 と表示されていますが、やはり、先ほどの warning が気になります。
参考までに、gcc では warning は表示されません。
実行結果も正常です。
gcc で warning が表示されないのにはわけがあります。
それも、次の章で。
それでは、また今度。