++をして、私は、コードの一部でも動作しますなぜ取得に問題が午前:のJava:トラブル私は
private int m;
private int n;
public void f() {
m = (m +2) % n;
System.out.print(m+"\n");
}
public void g() {
int i=0;
m=0;
n=8;
while (i++<n) {
System.out.print("i=" + i + " m=");
f();
}
}
私はg()
を実行した場合、私は、次のプリントアウトを取得:私として
i++=1 m=2
i++=2 m=4
i++=3 m=6
i++=4 m=0
i++=5 m=2
i++=6 m=4
i++=7 m=6
i++=8 m=0
をそれを理解して、最後の行は現れてはいけません。なぜf()
は前回の取得ですか?
f()
が初めて呼び出されると、i = 0
とそこにはi++ = 1
があります。 (したがって、i
を印刷すると、それはすでに1
に等しい)。
私がf()
を最後に2回呼び出すと、i = 6
、そしてi++ = 7
があります。これは最後の全体で、< n
(n = 8
)です。
なぜi++
が既に= 8
になっているときに、関数が再び呼び出されるのですか?これは本当に私を混乱させる。
あなたは 'i ++'と '++ i'の違いを知っていますか?そうでない場合は、そのコードを調べて、コードがそのように機能する理由を知ってください。 – Tom
このような出力をどのように受け取ることができますか?再現できません! – xenteros
@xenteros http://ideone.com/jr9QDr – Tom