C++のインクリメント(デクリメント)方式の話。
どちらを使ってもその後の動作が変わらない(どちらを使っても同じ。forループ内での使用のケースなどの)場合、前置(++C)と後置(C++)のどちらを使うのが望ましいか。
前置・後置の違い
前置(++x):新しい(すなわちインクリメント後の)xの値を返す。y=++x
はy=(x=x+1)
と等価。
後置(x++):古い(すなわちインクリメント前の)xの値を返す。y=x++
はy=(t=x, x=x+1, t)
と等価。
どちらを使うべきか
明確に後置(x++)を使いたい場合以外は、前置(++x)を使うのが望ましい。
前置・後置の違いで示した通り、後置の場合は一時オブジェクトを生成しているため、前置の場合よりもコストが余分にかかっている。
一般的な意見
『Google C++ Style Guide』や『Effective C++(スコット・メイヤーズ)』でも、前置インクリメントが推奨している。以下は『Google C++ Style Guide』からの抜粋。
コードにおいて、後置インクリメント(
i++
)・後置デクリメント(i--
)の式の結果を明示的に必要とする場合を除き、常に前置インクリメント(++i
)・前置デクリメント(--i
)を使用してください。
https://ttsuki.github.io/styleguide/cppguide.ja.html#Preincrement_and_Predecrement
※以下の理由から、後置のほうが読みやすいと感じる人もいるようだ。同じく『Google C++ Style Guide』からの抜粋。
特にC言語での開発において、
for
ループなどの式の結果が使われない場合でも、伝統的に、演算子を後置する形(i++
)が使われてきました。 この形は、英文法の語順と同じ、主語(i
)の後に動詞(++
)が続く形をしているため、こちらの方が読みやすいと感じる人もいるでしょう。
おわり
「C++」は「++C」に改名しよう。