8.8 Operator Precedence

Last-modified: 2025-03-03 (月) 21:08:52

8.8 演算子の優先順位

演算子の優先順位は、異なる演算子が 1 つの式内で近くに出現する場合に、演算子がどのようにグループ化されるかを決定します。たとえば、'*' は ' よりも優先順位が高い+' です。したがって、この式は と を掛け合わせ、 その積 (つまり ) に加算するa + b * cことを意味します。 bcaa + (b * c)

括弧を使用すると、演算子の優先順位を無効にすることができます。優先順位のルールは、自分で括弧を書かなかった場合に括弧が想定される場所を示すものと考えることができます。実際、珍しい演算子の組み合わせがある場合は、括弧を使用するのが賢明です。プログラムを読む他の人が、この場合の優先順位を覚えていない可能性があるためです。あなたも忘れてしまう可能性があり、その場合、あなたも間違いを犯す可能性があります。明示的な括弧は、そのような間違いを防ぐのに役立ちます。

優先順位が同じ演算子を一緒に使用する場合、代入演算子を除いて、左端の演算子が最初にグループ化されます。代入演算子は逆の順序でグループ化されます。したがって、式a - b + cは としてグループ化されます (a - b) + cが、式a = b = cは としてグループ化されます a = (b = c)。

前置単項演算子の優先順位は、オペランドの後に別の演算子が続く場合に重要です。たとえば、は を-x^2意味します -(x^2)。なぜなら、'-' は ' より優先順位が低い^'。

以下は、優先順位の降順で並べた Octave の演算子の表です。特に断りがない限り、すべての演算子は左から右にグループ化されます。

function call and array indexing, cell array indexing, and structure element indexing
'()' '{}' '。'
postfix increment, and postfix decrement
'++' '--'

これらの演算子は右から左にグループ化されます。

transpose and exponentiation
''' '。' '^' '.^'
unary plus, unary minus, prefix increment, prefix decrement, and logical "not"
'+' '-' '++' '--' '~' '!'
multiply and divide
'*' '/' '\' '.\' '.*' './'
add, subtract
'+' '-'
colon
':'
relational
'<' '<=' '==' '>=' '>' '!=' '~='
element-wise "and"
'&'
element-wise "or"
'|'
logical "and"
'&&'
logical "or"
'||'
assignment
'=' '+=' '-=' '*=' '/=' '\=' '^=' '.*=' './=' '.\=' '.^=' '|=' '&='

これらの演算子は右から左にグループ化されます。