データを入れておく箱 - 変数

プログラムは、データを保存しておく場所を確保しなければいけません。このデータを保存しておく場所のことを、変数といいます。

変数を使うと、コンピュータのメモリに、データを覚えておくための場所を確保できます。

変数の名前

変数を使うには、その変数に名前、変数名をつける必要があります。そうでないと、データをどこに記憶したのかがわからなくなってしまいます。 あとでその変数を使うときに、どのようなデータが記憶されているのかわかりやすいような名前をつけたほうが良いでしょう。

また、変数名に使える文字には以下の様な制限があるので、覚えておきましょう。

  • 名前には半角の英数字を使うこと。→ a, b, b1, a2など。
  • 数字で始まる変数名は使えません。→ 1a, 2bなどはNG。
  • 全角文字は使えません。→ 身長 や 体重 などという変数名は使えない。
  • mainやifなど、予めC言語にある言葉(予約語といいます)は使えません。

変数の種類

プログラムは、様々の種類のデータを扱います。例えば、給料を計算するソフトならば、社員の名前には「文字」を、金額の計算には「整数」や「実数」を扱います。 このようなデータの種類のことを、データ型といいます。

データを記憶するための箱である変数も、このデータ型に合わせて用意されています。 「整数」型の箱に「文字」を入れることはできませんので、注意するようにしましょう。

C言語でよく使われるデータ型には、以下のようなものがあります。 なお、浮動小数点型とは小数点がついたデータ(実数)を表します。

タイプ 型名 サイズ 意味 範囲
整数型 short 16 単長整数 -32768〜32767
  int 16 整数 -32768〜32767
  long 32 倍長整数 約±21億4700万
浮動小数点型 float 32 単精度浮動小数点数 有効桁7
  double 64 倍精度浮動小数点数 有効桁16
文字型 char 8 文字 8bitの文字コード

変数の宣言

変数を使う前には、ソースコードの中で名前とデータ型を指定します。これを、変数の宣言と呼びます。 プログラムはコンピュータに、変数の宣言によって、「これから変数を使うので準備してください。」ということを指示しています。

// 変数宣言の例
int height;
char code;

変数への代入

変数が準備できたら、変数にデータを記憶することができます。

変数へデータを記憶することを「代入する」といい、=記号を使って行います。

変数への代入は以下のように、 変数名 = 値; という式で表します。このような式を、代入式といいます。

// 変数への代入の例
height = 167;
code = 'T';

変数に記憶されたデータ(変数の中身)のことを、変数の値といいます。

変数宣言と同時に、変数に値を入れることもできます。これを、変数の初期化といいます。

// 変数の初期化の例
int height = 167;
char code = 'T';

また、一度データを代入した変数に、再度別のデータを代入することもできますし、変数に変数の値を代入することもできます。

int nenrei;
int birth_year;
int age = 19;
// 一度データを代入した変数に、再度別のデータを代入する
age = 20;

// 変数に変数の値を代入する
nenrei = age;
birth_year = 2016 - age; // 2016 - 年齢で生年がわかる

変数を使う

それでは、実際に変数を使ってソースコードを書いてみましょう。 変数を使ってみるサンプルのプログラムです。ファイル名は、var1.cとします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>

int main(void)
{
char first_name;
char last_name;
int age;

first_name = 'T';
last_name = 'M';

age = 16;

printf("私の名前は、%c.%c.です。\n", first_name, last_name);
printf("年齢は、%d歳です。\n", age);

return 0;
}

変数の宣言や代入は先述のとおりです。

printf()関数で変数の値を表示するには、

printf("変換指定文字", 変数名);

というように指定します。

具体的には、以下のようなコードになります。

// 整数型の変数の値を表示
int number = 1;
printf("整数: %d\n", number);

// 実数型の変数の値を表示
float real_number = 2.3;
printf("実数(単精度): %f\n", real_number);

double real_number2 = 3.14159;
printf("実数(倍精度): %f\n", real_number2);

// 文字型の変数の値を表示
char code = 'T';
printf("文字: %c\n", code);

変数の初期化

以下のコードを入力し、実行してみてください。ファイル名は、var2.cとします。

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>

int main(void)
{
int a;

printf("aの値は、%dです。\n", a);

return 0;
}

結果は人によって違うと思いますが、おかしな値が表示されましたね。 変数を初期化せずに、値が何も入っていない状態で使うと、おかしな値が表示されます。この値を、ゴミ値といったりもします。

高度なプログラムを書くようになると、このゴミ値が重大なエラーのもとになることもあるので、変数を使うときは必ず値が入っているかどうか確認するようにしましょう。

練習問題

  1. てつなくん(仮名)は、前期中間試験で国語80点、数学90点、英語70点を取りました。それぞれの点数を変数に代入してから、それぞれの点数と合計点と平均点を画面に表示しなさい。ファイル名は、ch04_ex1.cとします。