プログラミングにおいて、数学とは違い、=
は代入を表しています。このイメージを頭に定着させることが、プログラミング学習における最初のハードルと言えるでしょう。
このコンテンツでは、代入をする際に使う「式」において、どのような優先順位で評価されるかを説明します。
また、併せて学習しておきたい「結合規則の原則」についても一緒にご紹介します。
まず、以下のコードを見てみましょう。
変数a
と変数b
を加算した結果が変数c
です。
この単純なプログラムは、当然ながらa + b
が最初に評価(evalやevaluationとも言います)されます。
では、次に以下のコードを見てください。
こちらを見ると、a + b - c
となりますが、この計算がすべて同時に行われるわけではありません。
最初にa + b
が評価されるため、結果的に(a + b) - c
という形で評価されます。この文脈でいえば、=
はさらにその最後に評価される(≒代入される)ということです。
式は基本的に左側から評価されますが、例外的に優先順位を繰り上げる演算子があります。
*
(乗算、掛け算)と/
(除算、割り算)、そして%
(剰余、割り算の余り)です。以下のコードを見てみましょう。
左側からの評価であれば、(2 + 3) * 5
という評価順になり、結果は25
となりますが、この場合は2 + (3 * 5)
で17
になります。
ここは数学と同じで、計算上は*
のほうが高い優先順位のため、こういった結果となります。数値計算が必要なシステムを書く際には気をつけましょう。
優先順位の説明で、=
は最後に評価されると述べましたが、=
に関しては「右から評価される」というルールがあります。
これは+=
や-=
といった演算子の場合でも同じく「右から評価」です。こういったルールをプログラミングにおいて「結合規則の原則」と言います。
代入演算子は右から、と覚えておくと良いでしょう。
なお、代入演算子を利用した複合代入演算子の一覧は以下となります。これらはすべて「右から評価」です。
| 演算子 | 例 |
|--------|-------------------------|
| +=
| a += 1
(a = a + 1
) |
| -=
| b -= 1
(b = b - 1
) |
| *=
| c *= 5
(c = c * 5
) |
| /=
| d /= 3
(d = d / 3
) |
| %=
| e %= 2
(e = e % 2
) |
普段プログラミングをしているときに、特段意識することはありませんが、こういった原則があることは頭の片隅に入れておいてください。
プログラミングはよく数学に似ていると言われがちですが、完全に数学と同じではないため、たびたび混乱することがあります。
コンピュータと人間の通訳をする目的であるため、コンピュータに理解しやすい書き方が追求されてきた結果、今のような書き方が主流になるよう進化してきました。
独特でとっつきにくい表現や記法も多いですが、慣れれば意識せず書けるようになるため、挫けないよう気持ちをしっかり持っていきましょう。