コンピュータは数値や文字などを一時的に保存しておくことができます。
このように、データを格納しておく箱のようなものを変数といいます。
今回は、この変数についての基本的な使い方などを記事にしていきます。
変数名
今までは、プログラムに数値や文字を直接書いていました。このように、プログラムの中であらかじめ決められた値を定数といいます。
ただし、途中で値を変えたくなったり、処理した結果により値が変わるなど、一時的にデータを保存したり、書き換えたいことがあります。そこで登場するのが変数です。
変数は、データを格納しておく箱のようなものであり、この箱に名前を付けたものが、変数名といいます。
変数名のルール
変数名はどんな名前でもよいわけではありません。次のようなルールがあります。
- 英字、数字、アンダースコア( _ )のいずれかを使います。特殊な記号は使えません。
- 数字ではじめることはできません。
- 大文字と小文字は異なるものとして区別されます。
- あらかじめC言語で使われている予約語(return、if、forなど)を使うことはできません。
※予約語は、まだ学習していないため、今はC言語であらかじめ決められた特別な言葉という程度の理解で問題ありません。 - 古いC言語(C90仕様)では、変数名は31文字までしか区別されないという制限があります。
※コンパイラにClang-clを使用していれば文字制限は特にありません。
変数を使用するためには
変数を使用するためには、変数に名前を付ける必要があります。
また、変数に使う箱には種類があり、どの箱を使用するかを決める必要もあります。
箱の種類のことを型といい、この型と名前を事前に用意しておくことを宣言といいます。
つまり、変数を使うには、型と名前を事前に宣言する必要があるということです。
型の種類
変数に使う箱には、文字、整数、浮動小数があります。また、値の範囲、サイズにより種類がわかれています。
C言語で扱われている主な型の種類をあげます。他の種類については別の記事にしようと思います。
| 種類 | 型名 | 説明 | 範囲(Clang-cl/windows環境) |
| 文字 | char | 文字や小さい整数を入れる | -128~127 文字も扱う |
| unsigned char | 文字や小さい整数を入れる | 0~255 | |
| 整数 | short | 小さめの整数を入れる | -32768~32767 |
| unsigned short | 小さめの整数を入れる | 0~65535 | |
| int | 一般的な整数を入れる | -2147483648~2147483647 | |
| unsigned int | 一般的な整数を入れる | 0~4294967295 | |
| long | より大きな整数を入れる | -2147483648~2147483647 | |
| unsigned long | より大きな整数を入れる | 0~4294967295 | |
| 浮動小数点 | float | 小数を扱う | 約 ±3.4×10⁻³⁸~約 ±3.4×10³⁸ |
| double | より高精度な小数を扱う | 約 ±1.7×10⁻³⁰⁸~約 ±1.7×10³⁰⁸ |
型名を見ると、unsignedが付いているものと付いていないものがあります。unsignedは、符号なしを意味し、マイナスは使えないことを示しています。その代わり、最大値が大きくなります。
範囲については、マイコンやコンパイラにより異なります。このため、一旦、windowsのClang-clコンパイラを使用した場合の範囲を記載しています。
変数の宣言
変数を使うために、宣言を行う必要があります。次のように宣言します。
型名 変数名;
int number;
char c;
float ft;型を先に記述し、スペースを空けて、変数名を記述して、最後に ; (セミコロン)を付けると、変数が使用できるようになります。
変数に値を代入
用意した変数に特定の値を入れることを、代入するといいます。次のように記述します。
number = 5;
c = 'A';
ft = 3.14;valueという変数に 5 を入れる。cという変数に文字の A を入れる。ftという変数に3.14を入れる。ということをしています。
= 記号は、値を記憶させる機能をもっていて、= の右側の値を、= の左側の変数にいれるという処理を行っています。
= の前後に空白を入れても、入れなくても、問題ありませんが、一般的に、= の前後はスペースを入れていることが多いです。
また、スペースは何個でも入れても問題ありません。例えば、下記のように見やすくすることも可能です。
number = 5;
c = 'A';
ft = 3.14;変数の値を変更
一度、変数に値を代入した後、変数の値を変えたい場合は、もう一度、変数に値を代入すれば、変数の値が上書きされます。
int number; // int型の変数numberを宣言
number = 5;
number = 10;3行目で、numberに5を代入した後、numberに10を代入しています。
この場合は、numberの値は、10になります。
変数の初期化
変数を宣言しただけでは、変数には値が何も入っていません。C言語では、変数を宣言すると同時に値を代入できます。
int number = 5;このように記述することで、宣言と同時に値が代入されます。このような処理を、「変数を初期化する」といいます。
変数同士の代入
今までは、変数に値を直接代入していました。
今度は、変数同士の代入です。変数に別の変数の値を代入することもできます。
int number1;
int number2;
number1 = 10;
number2 = number1;4行目で、number1は10になります。5行目のnumber2は、number1を代入しています。この場合、number1の値がnumber2に代入されますので、number2の値は10になります。
代入の注意点
変数に値を代入するときには、型の種類に注意する必要があります。
例えば、次のように整数値を扱うint型の変数に、浮動小数を扱うfloat型の変数や小数値を代入すると、意図しない値が代入されてしまいます。
int number;
float ft = 3.14;
number = ft; // numberには3が代入される
number = 3.14; // こちらもnumberには3が代入されるこのように、型の違う値を代入しようとすると、意図しない値になるため、注意が必要です。
まとめ
- 変数には、値を格納することができる。
- 変数は、型と名前を指定して宣言する。
- 変数に値を代入するには、= 記号を使う。
- 変数に別の変数の値を代入できる。
- 変数の宣言と同時に値を格納できる。