宣言と変数
変数とは
変数とは、何かの数を入れる箱のことです。
単純に、数は数として、箱はメモリ領域を指します。
変数と定数
変数の逆の言葉である定数とは、
変数に具体的な値を入れる時は、
ユーザーが入力した数値を入れるか、
プログラム内で定義した数値を入れるかで処理しますが、
その入力する具体的な数値のことを定数と呼びます。
変数の宣言
変数は型を宣言しなければ使うことが出来ません。
コンピュータが扱える数値は無限ではなく、
有言なため、適切な値の範囲を決めてやる必要があります。
例えば、電話番号をメモする時は、
大きな台帳ではなくて、小さいノートか、小さいメモ帳を使います。
当然ながら、其の方が効率的だからです。
大きな台帳に記述する場合、どこかの大企業の顧客の電話番号管理帖等を
記録する時に使います。
また、メモ帳や台帳、ノートは無限にページが続いてるわけでもなく、
50ページ、あるいは200ページ等で記述できる要領は有限なのです。
これと同じでコンピュータに記録できる要領が決まっており、
それ以上の領域での作業は出来ません。
そのため、変数を使う時は宣言と言う形で、どのぐらいの量を扱う変数なのか
あるいは、どんな数値の表現の仕方なのかということを宣言する必要があるのです。
変数を使う
では変数を使って見ましょう。
int main(){
int i = 10;
i = 20;
float f = 1.9;
f = i;
return 0;
}
色々なことが出来ますが、ここでは変数の初期化と代入について触れます。
変数の宣言は、
int i;とすることもでき、この場合初期化されていない何が入ってるか
わからない変数iの領域を使うことが出来ます。
そこに定数を = 代入演算子を使い変数に値を格納してあげます。
すると、iには10という数値が格納されたことになります。
更に、後の方で、f に i を代入していますが、
この場合、fもiも10が入っていることになります。
変数同士の代入も可能なのです。
return 0というのはまた、後々関数の項で述べます。
浮動少数
先ほど当たり前のように使っていましたfloat型変数。
これは浮動小数点を扱うための型です。
実はint型というのはintegerの略で、意味は整数という意味です。
そのため小数点以下の計算は出来ずに、切り捨てられます。
つまり、int i = 5 / 3;とするとiに格納される数値は1になります。
本当は1.88888・・・になるのですが、intは整数しか扱えないため、
小数点以下が四捨五入もされず、問答無用に切り捨てられてしまいます。
float型を使えば、1.88888・・・を格納できますが、
どこかで丸め込み処理をしなければならないため、誤差が出ます。
コンピュータは先ほど言ったように、無限という数値は扱えません。
1.8888・・・のように無限小数が合った場合、どこかで切り捨てるかしないと、
計算出来ないので、切り捨てられた分だけ誤差が出てくるわけです。
誤差が出ないようにするためにもっと大きな少数を使うための、
doubleという型も用意されています。
これはfloat型よりも扱える桁数が多いです。
しかし、doubleも無限ではなく有限の桁しか扱えないことに注意してください。
文字列
変数の中に文字を格納することもできます。
char型という文字を格納するための型があるのでこれを使いましょう。
char a = 'A';
これで変数aの中にAという文字が入りました。
しかし、aの中身は文字なのにどうして変数と言ったのでしょう。
実は文字はコンピュータでは扱えません。
そのため、文字の絵を予めどのように出力するか決めたものを、
コンピュータの中に順番に組み込んであります。
その組み込んだ65番目にAが格納されているので、
65番目という数値を入力すればAという文字を使うことが出きるのです。
65というのは数値なのでaを変数と呼んだわけです。
また、文字列を格納する時はポインタを使います。
char * a = "ABC";
この場合、[A][B][C][\0]という文字列が入っているアドレスを示す変数が
aになります。
ポインタについてはまだ後ほど詳しく説明します。
また、先ほどの"ABC"を数値に直すと[65][66][67][30]となります。
コンピュータはこのようにして文字列を表しているのです。
変数宣言一覧表
32bit変数型表 |
short | 16bit | 2byte | -32768〜+32767 |
unsigned short | 16bit | 2byte | 0〜+65535 |
int | 32bit | 4byte | -214743648〜+214743647 |
unsigned int | 32bit | 4byte | 0〜+429487295 |
long | 32bit | 4byte | -214743648〜+214743647 |
unsigned long | 32bit | 4byte | 0〜+429487295 |
float | 32bit | 4byte | 浮動小数点数を表す型 |
double | 64bit | 8byte | 倍精度浮動小数点数を表す型 |
char | 8bit | 1byte | -128〜+127 |
unsigned char | 8bit | 1byte | 0〜+255 |
bool | 1bit | 1byte | true or false |
string | ---- | ---- | クラス:文字列 |
viod | ---- | ---- | 空かNULLポインタか0を表す |
byte | 16bit | 2byte | -32768〜+32767 |
32bitコンピュータであれば上記のようになりますが、
64bitコンピュータや少し前の16bitコンピュータになると其の領域が違います。
そのため、short <= int <= longとも言えます。
32bitでは short < int == long
64bitでは short < int == long
16bitでは short == int == long
また使っているコンパイラによっては違うこともあります。