C99 標準では、式は優先順位と結合性を考慮しています。
ドキュメントに演算子が現れる順序が優先順位を下げるため、優先順位は非常によく文書化されています。そのため、関数呼び出しは乗算演算子の前にあり、それは加法演算子の前に来ます。
ただし、左か右かに関係なく、結合性の決定的な説明を見つけることができません。これは、1 つのバリアントと他のバリアントに適用35/5*2
されるため、重要です。14
(35/5)*2
3
35/(5*2)
セクション6.5 Expressions /3, footnote 74
の状態:
この構文は、式の評価における演算子の優先順位を指定します。これは、この副次句の主要な副次句の順序と同じで、優先順位が最も高いものから始まります。
各主要な副次句内では、演算子の優先順位は同じです。左結合性または右結合性は、各節で説明されている式の構文によって示されます。
ただし、次のように乗算の場合を考えます。
6.5.5 乗法演算子
構文の
multiplicative-expression:
cast-expression
multiplicative-expression * cast-expression
multiplicative-expression / cast-expression
multiplicative-expression % cast-expression
制約
各オペランドには算術型が必要です。演算子のオペランドは%
整数型でなければなりません。
セマンティクス
通常の算術変換がオペランドに対して実行されます。
二項演算子の結果は*
、オペランドの積です。
演算子の結果は/
、第 1 オペランドを第 2 オペランドで除算した商です。演算子の結果は%
剰余です。どちらの操作でも、2 番目のオペランドの値がゼロの場合、動作は未定義です。
整数が除算されると、/
演算子の結果は小数部分が破棄された代数商になります。商の場合a/b
表現可能である場合、式(a/b)*b + a%b
は等しいものとしa
ます。
そこには結合性について言及しているものは何も見当たりませんし、標準の他の場所にデフォルト設定があるようにも見えません。
ここで何か不足していますか?