(++ i)++が有効なのに「++ i ++」が無効なのはなぜですか?
次のコードを考えてみましょう: int main() { int i = 2; int b = ++i++; return 3; } 次のエラーでコンパイルされます。 <source>: In function 'int main()': <source>:3:16: error: lvalue required as increment operand 3 | int b = ++i++; | ^~ これは私には公平に聞こえます。後置インクリメントはコードのように解析されて、接頭増分よりも高い優先度を有するint b = ++(i++);とi右辺値です。したがってエラー。 デフォルトの優先順位を上書きするために、括弧を付けたこのバリアントについて考えてみましょう。 int main() { int i = 2; int b …