代入と評価の順序

プログラミングを学ぶ際に、ほとんどの学生が最初に直面する2つの難点は、代入操作と評価の順序だ。

代入操作

ほとんどのプログラミング言語のほとんどすべてのプログラムで、次のような行を見かけるだろう。

a = 10;
D

この行の意味は、"aの値を10にする"ということだ。同様に、次の行は"bの値を20にする"という意味だ。

b = 20;
D

この情報に基づいて、次の行について何と言えるか?

a = b;
D

残念ながら、この行は、私たちが知っている数学の等価の概念とは関係がない。上記の式は、"aはbと等しい"という意味ではない。前の2行と同じ論理を適用すると、上記の式は"aの値をbの値と同じにする"という意味になる。

数学でよく知られている=記号は、プログラミングではまったく異なる意味を持つ。左側の値を右側の値と同じにする、という意味である。

評価の順序

通常、プログラムの操作は、プログラムに記述されている順番で段階的に実行される。(この規則には例外があるが、それについては後の章で説明する。)プログラムでは、前の3つの式は次の順番で実行される。

a = 10;
b = 20;
a = b;
D

この3行の意味は、"aの値を10にし、次に bの値を20にし、最後に aの値をbの値と同じにする"ということだ。したがって、この3つの演算が実行されると、abの値はどちらも20になる。

演習

次の3つの操作によって、abの値が入れ替わることに注目。最初にそれぞれの値が1と2だった場合、操作後は2と1になる。

c = a;
a = b;
b = c;
D