今回は変数と型に慣れましょう。
変数とはデータをいれる箱で、型とはその箱の種類のことです。
動かしてみよう
ということで、サンプルコードを用意しました。(色々な型の変数を用意して、それらの大きさ(サイズ)を出力させるサンプルコードです。)
とりあえず動かしてみましょう。(実行ボタンを押してみましょう。)
うまく実行できましたか?
各変数が何byteの大きさなのかが表示されたと思います。
(※sizeofは初出ですが、型や変数が何byteなのかを教えてくれる演算子です。)
解説
変数とはデータをいれる箱のようなものだと冒頭で述べました。
中学の数学で習う y = 2x + 3 とかいう式において、y や x を変数と呼んでいたと思いますが、それと同じです。
数学と違うところはいろんな種類(型)があるところぐらいです。
用途に合わせて、種類(型)を選んであげる必要がありますが、ひとまずは「箱のでかさと用途が違うんだなー」ぐらいの認識で十分です。
また、箱の大きさが違うので入れることができるデータの大きさが違います。
参考までに変数の種類(型)の一部を下表に示します。
今の段階で暗記する必要はありません。
使ってたらそのうち覚えますので、当面は必要な時にググったり、コンパイラのマニュアルを見るようにしましょう。
型の名称 | 扱える数字の範囲 |
---|---|
signed char | -128〜127 |
unsigned char | 0〜255 |
signed short | -32768〜32767 |
unsigned short | 0〜65535 |
signed long | -2147483648~2147483647 |
unsigned long | 0~4294967295 |
signed long long | -9223372036854775808~9223372036854775807 |
unsigned long long | 0~18446744073709551615 |
(※signed の記述は省略可能です。)
(※long型、long long型は実行環境によってサイズが異なりますが、それについては別途述べます。)
変数の作成方法ですが、型名に続けて任意の名称を書くことで作成できます。
unsigned short hensuu;
注意点
命名規則について
変数名には使えない名称があります。
- アルファベットと数字と下線の組み合わせである必要があります。
- ただし、先頭には数字は使えません。
- 予約語(後述)は使えません。
- アルファベットの大文字と小文字は別扱いです。
- 文字数制限があります。(基本は31文字まで。)
以下に使えない名称の例を示します。
ダメな変数名 | ダメな理由 |
---|---|
input# | #が不正です。(アルファベット、数字、下線のいずれでもない) |
2input | 数字から始めることはできません。 |
int | int は型名として使われている予約語なので使えません。 |
型名や記号などを避けていれば、だいたい違反することはありませんので、最初のうちは深く気にすることはありません。
またしくじった場合には、コンパイルが通らずにエラーになりますので、気づくことはできると思います。
変数の範囲を超えた場合(オーバーフロー)
変数には型という概念があり、型毎にとれる値の範囲が違うことを先に述べました。
では実際に範囲外の値を入れてみましょう。
下記のサンプルを実行してみましょう。
unsigned short型の上限値は 65535 でしたが、それよりも大きい 65536 をいれてみたところ、0 になってしまいました。
この症状をオーバーフローといいます。
オーバーフローを意図して使う場合もありますが、意図しないオーバーフローによる不具合はしばしば起こりがちなので注意するようにしましょう。
サンプルのように unsigned long型を用いることなどにより、回避することが可能です。
変数の範囲を下回った場合(アンダーフロー)
次に変数の範囲よりも小さい値の時の動きをみてみましょう。
unsigned short型の下限値は 0 でしたが、それよりも小さい -1 をいれてみたところ、65535 になってしまいました。
この症状をアンダーフローといいます。
オーバーフロー同様、不具合となりがちな箇所なので注意が必要です。
マイナスとなりうる場合には、signed型の変数を用意するようにしましょう。
値の丸め
整数型と実数型を混在させた場合、値の丸め(切り捨て)に注意が必要です。
下記サンプルを動作させてみましょう。
1.5 が 1 になってしまいました。
これも不具合となりうるミスの1つなので、注意しましょう。
まとめ
まとめです。
- 変数はデータをいれる箱のことです。
- 色んな種類(型)があります。
- 種類ごとに使える範囲が違います。
- 名前のつけ方に多少の決まりがあります。
以上です。
ではまた。