はじめての C

[Learning GNU C]

3.3. 代入の 別の 例題

(ここで) 別の 例題について 時間を 割(さ)こう。 この ちょっとした code では -- すぐに 説明するが -- ほんの 少し より 新しいことが 示される。

Example 3.3. displaying_variables.c

#include <stdio.h>

int
main()
{
short first_number = -5;
long second_number, third_number;
second_number = 20000 + 10000;

printf("the value of first_number is %hd\n", first_number);
printf("the value of second_number is %ld\n", second_number);
printf("the value of third_number is %ld\n", third_number);

return 0;
}

1つの short と 2個の long の 変数を 使った。 (今まで) int の 変数が 使えるようにしたが 他の 型でも どれほど それが 似ているかを 示すために 用いてみた。 main の 最初の line では 1つの line の 中で 変数を 宣言し 値を 渡す。 わりと そのことは 普通だ。 2つ目の line では コンマによって 区切られた 2つの 変数を 同時に 宣言する。 これは 手際よく できるが 多くの場合 code で 変数を (複数) 宣言するときには しばしば 1つの line に (まとめて) 用意する。

3つ目の line は 最初の 例題にある code と 全く 似ていて 加算演算子により 30000 の 値が 得られ second_number に 保存される。 最後に 注意するのは "%d" に 代わり printf() の 書式文字列が short 変数では "%hd"、long 変数では "%ld" を 含むことだ。 こうした 小さな (2つの) 文字の 組み合わせを 変換指定子 conversion specifier と 呼ぶ。 変数の 型は それぞれ 自らの 変換指定子を もつ。 パーセント記号を 単体で 表示したいときには "%%" と 書かないと いけない。

コンパイルし 実行すれば 変数の 値が わかる。 third_number の 値 (だけ) が 見慣れない ものだろう。 これは 値が 全く 代入されなかったことによる。 変数を 宣言すると OS は なんらかの memory を そのために 割り当てる。 使われた memory が 前もって なにかを 知る 方法は ない。 変数に 値を 渡すまでは 実際には そこに 保存された data は random になる。 変数に 値を 代入することを 忘れるのは 初心者の プログラマに よくある ミスだ。