10

次のコードを検討してください。

long val = 0;
for(int i = 0; i < 2; val++)
    val =+ ++i;

System.out.println(val);

どうしてval = 3最後に?

私は次のように計算したでしょう:

val     i
0       0   i < 2 = true;
0       0   ++i;
0       1   val =+ 1;
1       1   (end of for loop) val++;
2       1   i < 2 = true;
2       1   ++i;
2       2   val =+ 2;
4       2   (end of for loop) val++;
5       2   i < 2 = false;
Output: 5

val =+ ++iしかし、それは 3 です。2 回目にインクリメントが行われず、i = 1事前に にインクリメントされる理由がわかりませんi = 2

4

4 に答える 4

0

修正された計算:

val   i
0     0  i<2 = true;
0     0  ++i;
0     1  val = +i = 1;
1     1  (end of for loop) val++;
2     1  i<2 = true;
2     1  ++i;
2     2  val = +i = 2;
2     2  (end of for loop) val++;
3     2  i<2 = false;
Output: 3
于 2013-10-07T22:50:13.547 に答える