我無法理解以下代碼塊。Java前後遞增
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
有人可以向我解釋這個嗎? 感謝
我明白,對於作業/代碼理解問題,這個問題是有道理的。但是在生產系統中,沒有人應該寫出像count + =(count ++);'這樣的混淆行。 – 2012-03-19 14:54:35
@MikeRyan完全同意。如果有人問我那條線是幹什麼的,而且我心情不好,我會回答「它會讓你的合併建議被拒絕。」 – yshavit 2012-03-19 14:58:40
在FindBugs(或類似的開源工具)中是否有一條規則可以解決這個問題? – 2013-06-14 12:29:29