CとC++の演算子
優先順位の表は、括弧で括られていない式において結びつく順序を決める。
++x * 3は優先順位の規則がなければ曖昧である。しかし、実際には、優先順位によってxは*より++に結びつくので、(++x) * 3と解釈される。
同様に、3 * x++ではxのみがインクリメントの対象となる。
優先順位と結合性の問題は上記のダイアグラムのように一般化できる。コンパイラの目標はこのようなダイアグラムを式として解決することである。この図は各単項の演算子(ここではそれぞれ3 + ( . ), 2 * ( . ), ( . )++, ( . )[i]と表記する)がyへ結合しようとしていることを表す。優先順位の表から、各部分式は最終的に、( . )[i]はyへ、( . )++はy[i]へ、2 * ( . )は(y[i])++へ、3 + ( . )は2 * ((y[i])++)という結合にしか成り得ないことが決定される。 注意: 優先順位からは部分式が「何」に対して作用するかを決めるが、「いつ」作用するかには関与しない。