「C How to Program 6th edition - page 119」は、++演算子の結合性は「右から左」であると述べています。++ は単項演算子であるため、これはどういう意味なのだろうか。どのような場合に単項演算子の結合性が発生するのでしょうか?
Kernighan/Ritchie による「The C Programming Language, Second Edition, ANSI C」にも、このように書かれています。明らかに、このアサーションは prefix と postfix を区別しません++
が、それでも true と見なすことができます。unary-expression を考えてみましょう++E++
。(これは構文的に正しいですが、オペランドが左辺値でなければならないという制約に違反しているため、意味的に間違っているだけです。) これは構文エラーを構成せず、 と同等++(E++)
です。この結合性を観察できるかどうかは、とりわけコンパイラのエラー メッセージの表現力に依存します。--E++
同様の式( と--
同じ優先順位を持つ)を使用して、たとえば gcc に教えてもらうことができます++
。それはメッセージを生成します
error: lvalue required as decrement operand
右側のインクリメント演算子が最初に関連付けられたことを示しています。