アットウィキロゴ
 

1.2.変数・数値と演算の基本②

変数の導入

 さて、簡単な計算をする方法を前回で学びました。これで複雑だったり大きな数同士の計算ができるようになりましたね。
 しかし、困ったことがひとつあります…
 数を記憶させることができないのです。つまり計算結果や計算に使う数値などを入れる箱みたいなのがないのです。

 答え出たよー!… ねえこれってどうやってプログラムに覚えさせるの...?

 そこで、変数というのを使用します。変数というのは値を代入して使用できる数のことです。
 変数は、値が上書きされる、またはプログラムが終了するまでその値を保持し続けます。

 こういうこと聞いたことありますか?
a=23,b=45としてa+bの値を求めよ
 このように文字に数値を代入してそれを数と扱って計算をする。
 実は、C言語の変数の扱いというのはそれに似ており、文字を数値を持った変数として扱うことができるのです。
 しかし、まずはどの文字を変数として使用するかを宣言する必要があります。
 また、変数は宣言したときには値をもっていないので、代入する必要が有るのです。それでは以下のプログラムを入力してみてください。
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4. int a;
  5. a=100;
  6. }
  7.  
 int a;という記述は、「aを整数を扱える変数として宣言する。」という意味です。つまり、「プログラムでaという整数を扱える変数を使うよ。」ということを知らせるという意味です。また、変数宣言の後には必ずセミコロンを忘れないでください。

 a=100;という記述は、「aに100を代入する」という意味です。「=」という記号は右辺の内容を左辺にコピーするという意味を持ちます。(左辺は変数でなければいけない)

 これを、実行してみると…

 何も表示されねえじゃねえかアああああ(liToT)

 なぜでしょうか…
 aを整数型変数として使用するということを宣言し、値を代入しました…

 それだけの操作で出力してくれるなんて誰が言ったあああああああ!(#>o<)ノ
 はい、数値を出力しなければいけませんねwww。
 出力と言ったら…序盤に習ったprintf関数ですね!

 変数も、普通の式の値や値の直接入力同様にprintf関数でその変数が持つ値を出力できます。
 というワケでさっきのソースを以下のように改正してみます。
 また、変数には直接値を入れるだけでなく計算式の値も代入することができますのでついでにそれが確認できる記述もしてみましょう。
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4. int a,b;
  5. a=100;
  6. b=12/4;
  7. printf("%d\n",a);
  8. printf("%d\n",b);
  9. }
  10.  

 うまく行けば、以下のような出力結果となると思います。
100
3
 最初に表示した変数aの値は100なので、100が出力され、改行して、変数bは12÷4の数式の商が値となるので、3が出力されます。

 このようにして、変数は数値を記憶してそのまま使うことができます。

 また、変数の宣言を以下のように
 int a;
 int b;
 
のように複数に渡ってやってもOKですし、
int a=100,b=12/4;
 
のように宣言と同時に値を代入しても構いません。

 このようにして変数は自由に扱うことができますが、以下のようなルールが有ります。
 変数は、代入させたい数値に対応できた型の変数を使用する必要が有る。
 これは鉄則ともいうものです。

 上の文で少しだけ言って勘の良い人は覚えているかもしれませんが

 intは整数を扱える変数を宣言すると私は言いました。

 つまり、intでは整数は扱えても小数を扱えないのです。

 じゃあ、どうすればいいか… そのためには小数なども扱える変数を使用したらいいのです。

 そこで使用するのがdoublefloatです。これは小数も扱える型(変数の種類のこと)の変数です。
 ちなみに、この二つの変数の型の違いは性能です。
 float型変数は浮動小数点型変数と言い、普通に小数を扱うことのできます。
 double型変数は倍精度浮動小数点型と言い、float型の倍の精度で小数の値を表現することができます。
 なので普通小数を扱える変数を使用するというときは、double型を使用します。

 では、実際に使ってみましょう。以下のコードを見てみてください。
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4. double f;
  5. f=32/5;
  6. printf("%f",f);
  7. }
  8.  
 これをやると、小数点以下で割り切れるところまで計算された32÷5の値がfに代入され、printf関数で表示されます。
 また、変数fは小数を扱っているので、数値を表示する書式も小数を扱える%fにしなければなりません。
 では、以下にC言語で使用できる変数のリストを挙げてみました。見ておいてください。
値の種類 容量 補足
char 整数 8bit(1byte) 文字を扱う
short 整数 16bit(2byte)
int 整数 32bit(4byte) 16bit(2byte)の時もある
long 整数 32bit(4byte)
float 実数 32bit(4byte) 有効数字7桁程度
double 実数 64bit(8byte) 有効数字15桁程度

変数の上書き

 また、変数は値の上書きが可能です。
 サンプルソースを見てみましょう。
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4. int a;
  5. double b;
  6. a=100;
  7. b=2.423;
  8. printf("a=%d,b=%f\n",a,b);
  9. a=43;
  10. b=b+0.524;
  11. printf("a=%d,b=%f\n",a,b);
  12. }
  13.  

 出力結果は以下のようになります。

a=100,b=2.423
a=43,b=2.957

 一回目のprintf関数の手前では、aに100が代入。bに2.423が代入されているため、そのprintf関数ではその値が表示されます。
 二回目のprintf関数の手前で、aに43が代入され、bにはbに0.524足された値が出力されております。

 ここで、b=b+0.524という記述が出ましたが、これを見たら
 「bとb+0.524は等価じゃないよー だからこの式は成立しないよー」と思う人が居ることだろうと思います。しかし、最初で行った通り、「=」は代入に使う演算子です。
 なので、この記述には以下のような意味があります。

それまでのbの値に0.524足した値を新たなbの値として上書きする。

 つまり旧の値に、数値を足したものを新たな値としたわけですね。

 当然ですが、足し算だけでなくて他の四則演算子を使っても同じように値の上書きができます。
最終更新:2010年01月26日 17:29