説明:算術演算子

 算術演算子は文字通り算術(計算)を行う演算子です。

 足し算(+)、引き算(-)、掛け算(*)、割り算(/)の四則演算を行う演算子に加えて、割ったあまり(%)、加算演算子(++)、減算の演算子(–)(フォントによっては繋がって見えますがマイナス記号が2つ並んでいます)があります。

 代入演算子(=)と組み合わせた、複合代入(加算代入演算子)などもあります。

// 加算代入演算子
// 左辺の値に3プラスした値を代入する
intVar += 3;

 代入演算子(=)に加えることで計算した結果を変数に代入することができます。

int a = 3;
int b = 4;

// aとbの合計7で変数cが初期化される
int c = a + b;

加算・減算演算子は変数の左側(前置)に書くか、右側(後置)かで結果が異なります。

下のコードを結果を予想しながら実行してみてください。

int a = 5;
int b = ++a;

Console.WriteLine(a); // aの値は?
Console.WriteLine(b); // bの値は?

int c = 5;
int d = c++;

Console.WriteLine(c); // cの値は?
Console.WriteLine(d); // dの値は?

加算演算子の挙動を知らない方は予想外の結果におどろかれたのではないでしょうか?

まず、加算演算子の無い代入の動作を確認します。

int a = 5;
int b = a;

2行目の変数bに変数aの値を代入する場合、以下のようなステップで行われます。

  • Step1. aの中身を取り出します(評価)。
  • Step2. bにaから取り出した値を代入します。

 Step1の値を取り出す(評価)の前に加算するか、取り出してから加算するかが前置、後置で異なります。

 「int b = ++a;」の場合は、

  • Step1. aの値を1増やす(aは6になる)
  • Step2. aの値を取り出す(6が取り出される)
  • Step3. 取り出した値をbに代入する(aが6、bも6になる)。

 「int b = a++;」の場合は、

  • Step1. aの値を取り出す(5が取り出される)
  • Step2.aの値を1増やす(aは6になるが、Step1で取り出された値は5)
  • Step3. 取り出した値をbに代入する(aが6、bは5になる)。

 これで算術演算子の事前説明はおしまいです。