結合性
結合性
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/13 01:24 UTC 版)
(前節と同様、中置記法を採用している)たいていのプログラミング言語の四則演算の演算子において、加算と減算、乗算と除算のそれぞれの間には優先順位に差が無い。加減算の連続、たとえば a + b - c + d - e というような式は、左から順に (((a + b) - c) + d) - e という意味となる。このような結合を"左結合" (英: left-associative)、あるいは"左から右" (英: left to right) と言う。逆が"右結合"(英: right-associative)、あるいは"右から左" (英: right to left) である。 右結合の例としては、C系の言語に特徴的な代入演算子 = は右結合である。a = b = 1; という式文における式は a = (b = 1) という意味であり b = 1 という代入演算子による式の値は 1 なので、それが a に(も)代入され、結果として a と b に 1 が代入される。 冪乗の演算子として ** や ^ がある言語があるが、数学の記法では a b c {\displaystyle a^{b^{c}}} と ( a b ) c {\displaystyle (a^{b})^{c}} のように、左を先にしたい場合に括弧が要るので、右結合すなわち a**b**c は a**(b**c) という意味であるとしたほうが数学の記法とは一致するが(たとえばRubyでは ** は右結合である(オブジェクトの種類等によるものではなく、構文上の規則である))、VBのように算術演算は全て左結合としているため冪乗の ^ も左結合、という言語もある。 非結合(non-associative)は、右結合でも左結合でもない、たとえば比較演算子 < のように、a < b < c の意味が (a < b) < c でも a < (b < c) でもない、というような演算子の結合性である(C言語では左結合として解釈し、比較結果の真理値を整数0か1として、次の比較を行うという通常は意図しない意味を持ってしまう。Pythonのように a < b < c と書いて、意図した通りの意味になる言語もある)。加算や乗算のみの演算のような順序によらない演算には順序を定めない、という言語も考えられるが、あまり見られない(算術と違いコンピュータ上の計算ではオーバーフロー等のために、真に順序によらない計算は実はあまりない、という事情もある)。
※この「結合性」の解説は、「結合法則」の解説の一部です。
「結合性」を含む「結合法則」の記事については、「結合法則」の概要を参照ください。
「結合性」の例文・使い方・用例・文例
- 結合性のページへのリンク