我發現java編譯具有關於使用int和float的賦值和自賦值語句的非預期行爲。java運算符中的隱式轉換+ =
以下代碼塊說明錯誤。
int i = 3;
float f = 0.1f;
i += f; // no compile error, but i = 3
i = i + f; // COMPILE ERROR
在自賦值
i += f
編譯不會發出一個錯誤,但exaluation的結果與價值3
一個int,變量i
保持價值3
。在
i = i + f
表達式編譯器將發出錯誤與「錯誤:可能的精度損失」消息。
有人可以解釋這種行爲。
編輯:我已經張貼了這個代碼塊中https://compilr.com/cguedes/java-autoassignment-error/Program.java
完成。您可以在Java Language Specification中找到解釋。它免費在線提供。 –
爲了公平起見,「第5章轉換和促銷」是我在這個問題陷入困境之前所看到的,第15章甚至不會在第一頁上顯示尋找「Java隱式縮小轉換」。沒有找到信息不一定是不搜索的跡象,你的評論沒有任何幫助 –