.. _operator-precedence-lesson-label: =================== 演算子の優先順序 =================== このレッスンは、約5分で完了します。 最初に :ref:`basic-coding-style-lesson-label` のレッスンを終了していなければなりません。 解説 ########### このレッスンでは、M言語の演算子の優先順位の特殊性を紹介します。この優先順位は、多くのプログラミング言語とは異なり、Mに慣れていない開発者では、いくつかの注意が必要です。 優先順位 ########## M言語では、演算子の優先順序は、**左から右へ** です。 算術演算子を一緒に使用している場合、これは非常に重要です。 * \+ * \- * \* * \/ この結果は、慣れていないMの開発者にとっては驚くべきことでしょう。 より明確に: Mのすべての単項演算子と二項演算子は、 `左から右への優先順序`_ があります。 これは、以下のものがすべて含まれています。 * 算術演算子 * 文字演算子 * 論理演算子 .. _左から右への優先順序: http://tinco.pair.com/bhaskar/gtm/doc/books/pg/UNIX_manual/ch05s06.html#Precedence 例 ######## 次の操作をしてみましょう。 :: GTM> WRITE 1+2*3 戻り値は、 **7** ではなく **9** です。他の多くのプログラミング言語は、引き算(減算)よりも掛け算(乗算)と割り算が優先順序があることを、一般的なルールであることを期待しているでしょう。 M言語では、希望の順位を強制するために、括弧()を使用しなければならないでしょう。 試してみましょう :: GTM> WRITE 1+(2\*3) 7 そして、 :: GTM> WRITE (1+2)\*3 9 評価 ########## 次の操作の戻り値は、何でなければならないでしょうか? :: GTM> WRITE 1+2\*4+6\*5 次のレッスン: :ref:`basic-flow-control-lesson-label`