
85.C言語の型の話続き
ナックス「今日はちょっと新妻ゲームの事は忘れて型の使い方を理解するためのコードを書きます」
デビー君「はーい」
ナックス「以下のコードを kata1.c というファイル名で記述して、コンパイルして実行してね」
#include <stdio.h> void main() { int a = 1; a = a + 3; // 1 + 3 a = a * 2; // 4 * 2 a = 20 - a; // 20 - 8 a = a / 4; // 12 / 4 printf("aに入っているのは%d\n", a); printf("a + 5は%d\n", a + 5); }
ナックス「コンパイルは以下のような感じに実行します」
$ gcc kata1.c -o kata1
ナックス「実行すると……」
$ ./kata1
ナックス「以下のように表示されるよ」
aに入っているのは3 a + 5は8
ナックス「というわけで解説だ!」
ナックス「まずは、コメント機能を今回初めて使用しました。」
デビー君「コメント機能?」
ナックス「そうです。前に、設定ファイルのところで『これは設定ファイルのコメントだよ。設定の仕方を英語で説明しているだけだから、実際の機能には関係ないよ』みたいな話をしましたね?C言語のソースコードにも、自由にコメント機能を使用して、コメントできるでのす!」
ナックス「ずばり!コメント機能を使用している箇所は『// 1 + 3』の箇所と『// 4 * 2』と『// 20 - 8』と『12 / 4』の箇所です」
デビー君「変数に値を設定している右側に記述してるやつだね?」
ナックス「そうです。コメントで『変数使っていて分かりにくいかもしれないけど、実際に計算している内容はこうだよ』っていうメモをしているのです」
ナックス「コメントの書き方ですが、『//』と書けば、それ以降行末までの文字はコメントとみなされます」
ナックス「ちなみに計算の仕方は覚えてますか?昔、バッシュスクリプトを作成した時に一度解説したと思いますが、+は足し算、*は掛け算、-は引き算、/は割り算です」
ナックス「そして、コメントは実際のプログラムの動きには何も影響を与えないので、上記のコードは以下のコメントなしのコードと、まったく同じ動きをします」
#include <stdio.h> void main() { int a = 1; a = a + 3; a = a * 2; a = 20 - a; a = a / 4; printf("aに入っているのは%d\n", a); printf("a + 5は%d\n", a + 5); }
ナックス「ちなみに、コメントは何かの記述の右側に書かないといけないわけじゃないです。以下のような記述の仕方も出来ます。」
#include <stdio.h> void main() { int a = 1; // 1 + 3 a = a + 3; // 4 * 2 a = a * 2; // 20 - 8 a = 20 - a; // 12 / 4 a = a / 4; printf("aに入っているのは%d\n", a); printf("a + 5は%d\n", a + 5); }
デビー君「なるほど」
ナックス「次に型の話をしよう。今回はint型を使用しています。見て分かるとおり、『これはint型だよ!』っていうのは、変数を初めて使うときだけ記述すれば良くて、それ以降は記述しなくて良いです」
デビー君「うん。確かにそうなってる」
ナックス「むしろ、それ以降もintって書いてたらエラーになります」
デビー君「そうなんだ」
ナックス「最後!文字を表示している以下の箇所の解説です」
printf("aに入っているのは%d\n", a); printf("a + 5は%d\n", a + 5);
ナックス「ちょっと分かりにくいので、まずは改行の『\n』を取り除きます」
printf("aに入っているのは%d", a); printf("a + 5は%d", a + 5);
ナックス「パーセントディー(%d)が残りました。実は、printfで、以下のように記述すると、%dのところが、指定した整数になるのです」
printf("%d", 整数);
デビー君「ほう」
ナックス「整数は、直接数字を指定してもいいし」
printf("%d", 5);
ナックス「計算結果が整数になる計算式を入れてもいいし」
printf("%d", 3 + 7);
ナックス「整数が入っている変数を指定しても良いのです」
printf("%d", a);
ナックス「そして、こんな感じに記述すると」
printf("ほげほげ%d!いぇーい", 5);
ナックス「『ほげほげ5!いぇーい』のように表示されるのです」
デビー君「なるほど。分かりそう」
ナックス「さらにさらに!以下のように記述すると」
printf("ひとつめの数字は%d。ふたつめの数字は%d。合わせて%d。", 2, 3, 2 + 3);
ナックス「『ひとつめの数字は2。ふたつめの数字は3。合わせて5。』のようになります」
デビー君「おおぅ……ぎ、ギリギリで分かる」
ナックス「今日は難しかったかな!?」
デビー君「今日は難しかった……」
ナックス「次回!型の話続き。その2!!(予定)」
デビー君「げ!また型の話!?」