私はちょうどそれを実現しました
int i=0;
System.out.println(i++);
1の代わりに0を出力します。私はインクリメントされて印刷されたと思いました。逆のことが起こるようです。
なんで?
私はちょうどそれを実現しました
int i=0;
System.out.println(i++);
1の代わりに0を出力します。私はインクリメントされて印刷されたと思いました。逆のことが起こるようです。
なんで?
これらは、プリインクリメント オペレータとポストインクリメント オペレータです。この動作は正確です。
i++
元の値を返します。++i
新しい値を返します。System.out.println(i++);
最初に i の値を出力してから、i をインクリメントする必要があります。そのポストオーダーインクリメント。
++i will print 1
i++ will print 0
i++
i を返し、インクリメントすることを意味します。したがって、i の後の ++ です。
++i
は、i をインクリメントしてから返すことを意味します。したがって、i の前に ++
インクリメントを行うi++
と、次の命令までインクリメントは行われません。ポストインクリメントといいます。
ここで見つけることができるように: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.htmlには、i++ と ++i の 2 つの増分演算子があります。++i は、i++ が行うと思っていたことを行います。i++ は、他の目的で使用した後に値を増やします (詳細については、リンクを参照してください)。
に指定された値は、System.out.println(i++);
最初に 0 が割り当てられているため、インクリメントされます。実行しようとするとSystem.out.println(++i);
、1 が表示されます。
i++
=> 評価してインクリメント;++i
=>インクリメントしてから評価。for
ループについて考えてみてください -i
反復ごとにインクリメントされます。
++
after 変数は、ポストインクリメント操作を定義します。これは、行の他のすべての実行が完了した後、i
増加することを意味します。変数を使用++i
した場合、出力される前にインクリメントされます