変数

変数とは

プログラミングでは変数という機能を頻繁に使用します。
変数とは、文字列や数値などの値を一時的に保存しておく入れ物です。


static void Main(string[] args)
{
    int number;
    number = 10;

    Console.WriteLine(number);
    Console.ReadLine();
}
10

「Main」の波括弧内以外の行は毎回共通なので、今回からは省略して記述します。
実際のコードからは「using ~」などの行は削除せずにそのままにしておいてください。

上のコードでは3行目でnumberという名前の変数を用意しています。
そして4行目で変数numberに対して「10」という値を保存しています。

変数名の前のintというのはデータ型の一種で、今から使用する変数の種類を指定するものです。
「int」は「int型」と呼び、int number;のコードは「int型」である「numberという名前の変数」を作るという意味になります。
これを変数の宣言といいます。
int型の変数は、整数を扱うことができます。

4行目では、変数numberに値を保存しています。
6行目では、変数numberに保存した値をConsole.WriteLineメソッドを使用して表示しています。

データ型

変数に保存できる「値」にはいくつかの種類が存在します。
これをデータ型といいます。
以下はC#のデータ型でよく使用されるものの一部です。

byte
整数型。小さな値を扱う。
short
整数型。byte型より大きくint型より小さな値を扱う。
int
整数型。最も頻繁に使用される。
long
整数型。int型よりも大きい値を扱える。
float
小数型。小数点を含む値を扱う場合に使用。
double
小数型。float型よりも大きな値(精度の高い小数)を扱える。
bool
論理型。「true」か「false」かのどちらかの値のみ扱う。
char
文字型。文字(一文字)を扱う。
string
文字列型。文字列を扱う。

種類が多いですが、とりあえず重要なのはint型double型bool型string型あたりです。

整数値も小数値も同じ「数値」ですが、小数を含む値を使用するには小数型(float型、double型)のデータ型を使用する必要があります。
例えばint型(整数型)で宣言した変数に小数の値を保存すると、エラーにはなりませんがデータが変化してしまいます。
これを理解した上であえてデータを変化させるのならば構いませんが、単純ミスでデータを変化させてしまうとバグの原因になってしまうので注意が必要です。

詳しくはデータ型の項で改めて解説します。

変数の使い方

変数を使用するには、まず扱いたい値に対応するデータ型の変数を宣言します。
例えば小数を扱いたい場合はdouble型かfloat型を使用します。
続いて半角スペースを空け、変数名を指定します。


double real;

これで「realという名前の、小数を扱う変数」の使用の準備ができました。

次に、宣言した変数に対して値を保存します。
これは=記号で行います。


double real;
real = 1.23;

宣言した変数を=記号の左側に書き、右側に保存したい値を書きます。
これで変数realには「1.23」という値が保存された状態になります。
これを値の代入といいます。

変数に値を代入すると、後から自由にその値を取り出すことができます。


double real;
real = 1.23;
Console.WriteLine(real);

上記コードはコンソール画面に「1.23」が表示されます。

「変数から値を取り出す」と言っても保存した値が消えてなくなるわけではありません。
正確に言えば値のコピー、参照です。

変数は入れ物ですから、再度別の値を入れることもできます。


double real;
real = 1.23;
Console.WriteLine(real);
real = 4.56;
Console.WriteLine(real);
1.23
4.56

すでに値が入っている変数に再代入すると、値が上書きされます。

変数名

変数名は基本的に自由につけることができます。
半角英数文字とアンダースコア(_)が使用できますが、数字から始まる名前は付けることができません。
また、例えば「int」や「new」などの、C#が使用しているいくつかのキーワードも変数名には使用できません。
「int1」「_new」などの名前は可能です。

C#では日本語を変数名にすることもできます。
また、intなどのC#が使用するキーワードは変数名の前に@記号を付けることで変数名として使用することができます。


int あいうえお;
int @int;

@は特殊な記号で、変数名には含まれません。
C#のキーワードにつける場合は常に必要ですが、そうでない場合は@をつけなくても同じ意味になります。


int @abc;
int @int;

@abc = 1;
@int = 2;

abc = 3;
int = 4;

このコード最後のint = 4;はコンパイルエラーになります。

float型が使えない?

小数値はdouble型かfloat型を使用する、ということなのでfloat型を使用してみます。


double d;
d = 1.23;

float f;
f = 1.23;

しかしこれは5行目でコンパイルエラーとなってしまいます。

C#では「コード上に小数値を記述するとそれはdouble型として扱われる」というルールがあるためです。
double型とfloat型ではfloat型のほうがサイズが小さいのでエラーになるのです。

今はとりあえず小数型はfloat型ではなくdouble型を使用しましょう。
この問題の解決法はリテラル組み込み型の型変換で改めて解説します。

変数の初期化

変数は何か値を入れてからでないと使用(中身を取り出すこと)はできません。
例えば、


double real;
Console.WriteLine(real);

とすると、2行目でエラーになります。
何も値が入っていない変数realから値を取り出そうとしても不可能だからです。

変数に最初に値を代入することを変数の初期化といいます。
変数を使用する前には初期化が必要です。

変数は宣言と同時に初期化をすることもできます。


double real = 1.23;
Console.WriteLine(real);

こうすることで、変数realには「1.23」が入った状態となります。

正確にいえば、変数の宣言と同時に値を代入することを初期化と言います。
変数の宣言とは別の行で値を入れるのはただの代入です。
変数の初期化と代入は今は大した違いはありませんが、初期化時ならばOKだが代入時はNG、といった書き方も存在します。

複数の変数を同時に宣言

同じデータ型の変数を複数使いたい場合は以下のようにコンマで区切って一行で宣言することができます。


int num1, num2, num3;
num1 = 10;
num2 = 20;
num3 = 30;

宣言と同時に初期化する場合は以下のようにします。


int num1 = 10, num2 = 20, num3;

このコードでは変数num1num2には値が入っていますが、num3は空っぽとなります。

このページのまとめ

  • 値を一時的に保存するには変数を使用する
  • 変数にはデータ型があり、それにより保存可能な値の種類が異なる
  • 変数に値を保存することを代入という
  • 変数の宣言と同時に値を代入することを変数の初期化という
  • 値が保存されていない変数は使用(値の取り出し)はできない