Java前后递增

时间:2012-03-19 14:43:17

标签: java loops post-increment pre-increment

我无法理解以下代码块。

   int count = 0;
   for (int i = 0; i < 3; i++){
       count += (count++);
       System.out.println("count = " + count);
       System.out.println("i = " + i);
   }

我的理解是循环运行三次,执行以下

count = count + count
count = 1 + count

这将转换为以下内容,因为计数最初为0:

count = 0 + 0
count = 1 + 0 = 1
count = 1 + 1 = 2
count = 1 + 2 = 3
count = 3 + 3 = 6
count = 6 + 1 = 7

输出如下,计数打印为0。

    count = 0
    i = 0
    count = 0
    i = 1
    count = 0
    i = 2

有人可以向我解释一下吗? 感谢

2 个答案:

答案 0 :(得分:7)

令人困惑的部分是这一行 -

count+ = (count++);

这实际上是这样做的 -

count = count + ( count++ );

因此,等式(count++)的值为0,后增量发生后,但count被赋予0,因此后增量被丢弃。

这种情况发生了3次。

答案 1 :(得分:3)

count += (count++);

相当于

in tmp = count;      // right hand side of +=
count = count + 1;   // the count++
count = tmp + tmp;   // executing count += tmp

正如您所看到的,count = count + 1无效,因为count的值在最后一行被覆盖,如果count最初为0,那么结果显然是count = 0 + 0: - )