# 変数

C/C++ は、これまでに紹介した [Python](python) や [Perl](perl) とは違い、非常に几帳面な言語です。変数を使う前に「型」を明確に宣言しなければならず、言語側が勝手に空気を読んでくれることはほぼありません。その代わり、何が起きているかはすべて把握できます。理論上は。


## 数値

C/C++ では、変数を利用する前に必ず宣言を行います。その際、その変数にどのような種類の値を入れる予定なのかを、あらかじめ決めておく必要があります。例えば、整数を保存する変数 `a` を用意する場合は、次のように書きます。


```c
int a;
```

ここで `int` は整数型を表すキーワードで、`a` が変数名です。この操作で、整数を保存するための箱 `a` を用意したことになります。

C/C++ では、宣言しただけの変数の中に、どのような値が入っているかは分かりません。0 や 1 かもしれませんし、昨日に食べ残したピザの切れ端が入っている可能性もあります。中身不明の箱は危険です。変数を使う前には必ず初期化を行いましょう。

次は、変数 `a` を宣言し、値 `10` を代入してから表示する例です。

```c
int a;
a = 10;
printf("%d\n", a);
```

宣言と同時に初期化することも可能です。この方が安全で、読みやすく、うっかりミスも防げます。

```c
int a = 10;
```

小数を扱う場合は、`float` 型や `double` 型を利用します。`float` は単精度、`double` は倍精度の浮動小数点数を表し、後者の方がより多くの桁数を扱えます。精度が必要な場面では、`double` を利用します。

```c
float b = 3.14;
double c = 3.141592653589793;
```

## 文字

文字を扱う場合は、`char` 型を使います。`char` 型の変数には、シングルクォーテーション（`'`）で囲んだ 1 文字だけを代入します。

```c
char d = 'A';
```

複数の文字を扱いたい場合は、`char` 型の配列を利用します。このとき、代入したい文字列をダブルクォーテーション（`"`）で囲んで指定します。

```c
char str[] = "DNA";
```

一文字の場合は `'`、複数文字の場合は `"`。ここを間違えると、C/C++ は一切フォローしてくれません。


## 配列

複数の値をまとめて扱いたい場合には、[配列](cpp_array)、[ベクター](cpp_vector)、[リスト](cpp_list)、[連想配列](cpp_map)などを利用します。配列、ベクター、リストは、インデックス（番号）を使って要素を順番に管理します。一方、連想配列はキーと値のペアで要素を管理します。それぞれの詳しい使い方については、次項以降で説明します。
