ポスト インクリメント/デクリメントとプリ インクリメント/デクリメントの違いについて誰かが尋ねると、通常、プレフィックス バージョンでは変数に 1 を追加して変数の新しい値を返すのに対し、ポストフィックス バージョンでは変数に 1 を追加してから返すという回答が返ってきます。古い値を返します。
いじり回しているうちに、これらの行はすべて合法であることがわかりました。
int i = 1;
++i;
++++++++++++++i;
(++++++++++++++i)++;
(++++++(++++(++i)))++;
------i;
--++++--++----++i;
i+=++++++++++++++i+i++-i--;
ただし、次の行はどれも有効ではありません。
i++++;
++i++;
--i--;
接頭辞のバージョンが参照によって返されると仮定すると、これはすべて理にかなっています (接尾辞は接頭辞よりも優先されるため、最後の例でも)。
プレフィックス バージョンが参照を返し、ポストフィックス バージョンが値を返すという仮定/実現は正しいですか? pre/post inc/decrement 演算子について、私が知らない他の微妙な動作の違いはありますか?