プログラミングにおいて、数学とは違い、=
は代入を表しています。このイメージを頭に定着させることが、プログラミング学習における最初のハードルと言えるでしょう。
このコンテンツでは、代入をする際に使う「式」において、どのような優先順位で評価されるかを説明します。
また、併せて学習しておきたい「結合規則の原則」についても一緒にご紹介します。
まず、以下のコードを見てみましょう。
変数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 ) |
普段プログラミングをしているときに、特段意識することはありませんが、こういった原則があることは頭の片隅に入れておいてください。
プログラミングはよく数学に似ていると言われがちですが、完全に数学と同じではないため、たびたび混乱することがあります。
コンピュータと人間の通訳をする目的であるため、コンピュータに理解しやすい書き方が追求されてきた結果、今のような書き方が主流になるよう進化してきました。
独特でとっつきにくい表現や記法も多いですが、慣れれば意識せず書けるようになるため、挫けないよう気持ちをしっかり持っていきましょう。