2012-12-08 104 views
9

我發現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

+0

完成。您可以在Java Language Specification中找到解釋。它免費在線提供。 –

+0

爲了公平起見,「第5章轉換和促銷」是我在這個問題陷入困境之前所看到的,第15章甚至不會在第一頁上顯示尋找「Java隱式縮小轉換」。沒有找到信息不一定是不搜索的跡象,你的評論沒有任何幫助 –

回答