インクリメントとデクリメント
i++ と ++iの違いとは
-
- iは前置きインクリメント演算子と呼ばれ
i++は後置きインクリメント演算子と呼び区別します。
インクリメント演算子は両方ともに変数に現在の値+1という結果を与えます。
public class Test { public static void main(String[] args){ int i = 10; i++; System.out.println(i); ++i; System.out.println(i); } }
コンソールには11と12という数字が表示されます。
この結果から、それぞれ1を加算していることがわかります。
前置きと後置きの違いは多項式でインクリメントするとわかります。
前置き演算子はインクリメントしてから式を評価しますが
後置き演算しは式を評価してから変数をインクリメントするという
違いがあります。
ようするに、前置きの場合はインクリメントしてから値を返しますが
後置きは値を渡してからインクリメントするため、結果が異なります。
public class Test { public static void main(String[] args){ int i = 10; System.out.println(++i); System.out.println(i++); System.out.println(i); } }
この結果は11、11、12となります。
-
- iはi=i+1を計算してからiを渡しますが、i++はiを渡してからi=i+1の計算をします。
i++はiを渡してからi=i+1の計算をします。
なので、i++の時点では11で、その後の変数iは12になっています。
※おまけ※
public class Test { public static void main(String[] args){ int i =0; i=i++; System.out.println(i); } }
この結果は0になります。その理由は
i++は以下の手順で評価されていましたよね?