我從Java官方教程閱讀前綴和後綴++ - 有不同的優先級:優先++和 - 運算符在Java中
後綴:EXPR ++ expr--
一元:++ expr --expr + expr -expr〜!
根據教程,不應該這
d = 1; System.out.println(d++ + ++d);
打印出圖6(d++
使得d 2,++d
使得3)代替4-?
我知道++d
說明中被事先評估,但如果d++
具有更高的優先級,然後++d
,爲什麼不是d++
首先被評估?更何況d++
應該表明它具有更高的優先級?
編輯:
我試過如下:
d = 1; System.out.println(++d * d++);
它返回4.看來,它應該是2 * 2,而不是1 * 3。
類似這樣的問題讓我很巨大。沒有人*曾經*寫過像'System.out.println(d ++ + ++ d)這樣的代碼;'爲什麼你在意?它是一個超級平凡。 – Qwerky 2011-06-16 15:11:03
@Qwerky儘管沒有人會寫這樣的代碼,但也許是爲了上學。教師/教授喜歡問這樣的「它永遠不會寫成這樣,但我們總是在考慮你,看看你是否理解它是如何工作」的問題。 – 2011-06-16 15:14:24
@Qwerky對不起,讓你沮喪:)至於我之所以問,也許是因爲好奇。因爲我不是貓,所以很幸運。 – 2011-06-16 15:14:39