我无法理解以下代码块。
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
有人可以向我解释一下吗? 感谢
答案 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
: - )