returnでのインクリメント演算子・デクリメント演算子
”i++”というようなインクリメント演算子や”i--”といったデクリメント演算子をreturnで返す場合には注意が必要です。
この”++”は変数の前に記述する場合と、後に記述する2種類の記述方法があります。
前後のどちらに記述するかによって動作にも違いがあります。
前に書くと処理の開始時に変数+1された状態で処理が実行され、後に書くと処理が終了した後に変数+1されます。
このインクリメント演算子・デクリメント演算子をreturnで返す場合、前後を間違えると適切な値が返されないことになります。
わかりやすく書き直してみます。
例1:”return ++i;”を書きなおすと
i = i + 1;
return i;
例2:”return i++;”を書きなおすと
return i;
i = i + 1;
上のような違いになります。
例1だと変数+1した値が返されるのに対して例2では変数の値が返された後に変数+1されています。
インクリメント演算子やデクリメント演算子を用いる場合にたまーにこういったミスで適正な値が返ってこないということがありますので、ご注意ください。