変数について
この項目で学ぶこと
変数とは
変数とは、名前の通り「変化する数」です。プログラムを実行しているとき、さまざまな計算が行われ値が変化します。たとえばRPGのキャラのHPであったり、レベルであったり。そういう数です。文字も変数として扱えるのですが、C言語の文字の扱いは複雑なので別の講義で詳しく説明します。
今の時点ではあまり関係ありませんが、変数はメモリ(主記憶)上に記憶されます。この辺りの考え方がいずれ必要になってくるので一応覚えておいて下さい。
今の時点ではあまり関係ありませんが、変数はメモリ(主記憶)上に記憶されます。この辺りの考え方がいずれ必要になってくるので一応覚えておいて下さい。
変数の宣言の仕方について
変数を使うにはまず変数を宣言しなくてはなりません。変数を宣言するというのは、値を入れることが出来る箱を用意することと考えてください。変数を宣言する(箱を用意する)には変数の型と変数名を記述します。変数の型とは、用意された変数(箱)にどのような種類の値を入れることができるかを示します。具体的には整数、小数、文字の3つ型があります。たとえば整数型の変数には整数しか、文字型の変数には文字しか入れることが出来ません(正確には違いますが)。変数名とは、宣言した変数の名前です。つまり用意した箱の名前です。変数名は後述の条件を満たせば、自由につけることが出来ます。
変数の型には主に以下のものがあります。
変数の型には主に以下のものがあります。
int 整数型 float 小数型 double 小数型(floatより高精度) char 1文字
変数の宣言の仕方を見てみましょう。
変数を宣言するだけのサンプルソース
#include<stdio.h> int main (){ int sampleInt; // 整数型の変数を宣言 float Pi; // 小数型の変数を宣言 double weight; // 小数型の変数を宣言 char moji; // 文字型の変数を宣言 return 0; }
コンパイルすると、警告が出るかもしれません。ここではあくまでもサンプルなので無視します。本物のプログラムを作成しているときは無視しないでください。
変数に値を入れる
変数に値を入れるには、「=(代入演算子)」を用います。これは、右の値を左の変数に代入するという動作をします。数学のように同値であることを示しているわけではありません。
変数は宣言しただけではどのような値が入っているのか不明です。整数型の変数を宣言したとき、初期値が23098かもしれませんし、-320かもしれません。使い物になりませんね。変数は宣言すると同時に初期値を与えることが出来ます。C言語ではごみデータを上書きして使用できる値を代入することを初期化といいます。初期化の概念は言語によって異なるので注意しましょう。
変数は宣言しただけではどのような値が入っているのか不明です。整数型の変数を宣言したとき、初期値が23098かもしれませんし、-320かもしれません。使い物になりませんね。変数は宣言すると同時に初期値を与えることが出来ます。C言語ではごみデータを上書きして使用できる値を代入することを初期化といいます。初期化の概念は言語によって異なるので注意しましょう。
変数の宣言と初期化のサンプルソース
#include<stdio.h> int main (){ int sampleInt = 5; // 整数型の変数を5で初期化 float Pi = 3.14f; // 小数型の変数を3.14で初期化 double weight = 56.8; // 小数型の変数を56.8で初期化 return 0; }
変数を表示する
変数の初期化の仕方が分かりましたが、実際に初期化されているのかどうか見ることが出来ません。printf関数の書式指定機能を用いることで、変数の値を表示してみましょう。詳しい説明の前に、サンプルソースを見てみましょう。
#include<stdio.h> int main (){ int sampleInt = 5; // 整数型の変数を5で初期化 double weight = 56.8; // 小数型の変数を56.8で初期化 printf("サンプルイントの値は%dです。\n",sampleInt); // %dで整数 printf("weight = %f\n",weight); // %fで小数 return 0; }
実行してみると、printf関数に書かれている「%d」「%f」は表示されず変数の値が表示されます。このように%とそれに続く1文字からなる特殊な文字によって変数の値を表示することが出来ます。「%」に続く文字は表示したい変数の型によって異なります。値の保持のしかたが型によって異なるので、出力の仕方も型ごとに異なるためです。主なものを紹介します。
%d 整数 %f 小数(floatとdoubleどちらも) %c 1文字 %s 文字列
後者二つは文字列に関係するので別の講義で詳しく説明します。
計算してみる
計算に使える演算子は、以下のものがあります。
+ a + b aとbを足した値を求める - a - b aからbを引いた値を求める * a * b aとbをかけた値を求める / a / b aをbで割った値を求める % a % b aをbで割った余り(剰余)を求める
足し引き割り算の演算子は数学と同じですね。掛け算と剰余の演算子は覚えてください。剰余を利用する機会は日常生活ではあまりありませんが、ゲームプログラミングの際はそこそこ使用します。計算する際は変数同士を計算することも、変数と定数で計算することも、定数と定数で計算することも出来ます。定数とは変数以外の値です。4とか20とか。基本的には同じ型同士で計算することになります。また、''「変数aの値を4増やす」という場合には、「a = a + 4」と記述''します。慣れるまでは不自然に感じると思います。
さまざまな計算を行い、計算結果を表示する。ここでは整数型のみ扱うが、小数型でも同様に実行することが可能。
#include<stdio.h> int main (){ int a = 3 , b = 9; // コンマで区切れば同時に宣言することが出来る printf("aの値は%d,bの値は%dです\n",a,b); // 一度に複数の変数を表示することが出来る。 a = b; // aにbを代入する printf("aに%dを代入したので、aの値は%dです\n",b,a); a = 5; // aに5を代入する printf("aに%dを代入したので、aの値は%dです\n",5,a); // 変数でなくても型が同じなら%dで表示することも出来る a = a + 4; // aに4を足す printf("aに%dを足したので、aの値は%dです\n",4,a); a = 5 - 34; // aに5-34を代入する printf("%d - %d = %d\n",5,34,a); a = 4 * 3; // aに4×3を代入する printf("%d * %d = %d\n",4,3,a); a = 90 / 10; // aに90÷10を代入する printf("%d / %d = %d\n",90,10,a); a = ( 10 + 3 )*4; // 括弧で計算順序を変えることができる printf("( %d + %d )*%d = %d%dです\n",10,3,4,a); return 0; }
計算するときに注意すること
列挙します。
- 数を0で割る、剰余を求めることはできません。バグります。
- 小数型はそもそも割った余りが存在しないので剰余を求めることが出来ません。
- 計算には優先順位があります。+-より*/のほうが優先度が高いです。()で優先順位を変えることができます。中括弧,大括弧は存在せず、全て()で記述します。
int sample1 = 4 + 3*2; // 10で初期化される int sample2 = ( 4 + 3 )*2; // 14で初期化される
- 整数型に小数を代入すると小数点以下は切り捨てられます。
int sample1 = 10 / 3; // 3で初期化される int sample2 = 3 / 10; // 0で初期化される
変数名について
変数名に使用することが出来る文字は以下のものがあります(ただし、全て半角文字)。
- 小文字と大文字のアルファベット
- 数字
- _(アンダースコア)
小文字と大文字は別の文字として扱われます。つまり「sample」と「Sample」は別の名前です。
例外的に使えない変数名は次のようなものです。
- 変数名の先頭に数字は使えない
- 予約語(C言語が定める語)と同じ名前は使えない(returnなど)
printf関数のいろいろ
ひたすらサンプルソースを載せる予定です。