我有一個關於從int到長轉換在java中的問題。 爲什麼對花車就沒有問題:鑄造一個int到長
float f = (float)45.45;//compiles no issue.
float f = 45.45f; //compiles no issue.
但是從長遠類型似乎是一個問題:
long l = (long)12213213213;
//with L or l at the end it will work though.
long l = (long)12213213213L;
看來,一旦編譯器通知錯誤由於亂在沒有檢查程序員可能已經計劃的任何可能的轉換的情況下,它在那裏阻塞。
你對此有何看法?爲什麼它有什麼特別的原因?
在此先感謝。
我明白了,但是我的問題旨在瞭解爲什麼鑄造(長)12213213213;在這種情況下沒有考慮到,而在浮動時f =(浮動)45.45; (請注意,如果沒有投射它會發生錯誤)正常工作。 – Rollerball
@滾球..錯誤不是因爲鑄造。編譯器沒有機會到達那裏。只有在注意到「12213213213」時纔會停止,並且說,嘿,等待,這個數字不能表示爲「int」。所以,它給了你一個錯誤。這暗示了一個事實,最後沒有'L'的數字是'int'。所以,'4'是一個'int',但'4L'是一個'long'。 –
@每個人都閱讀此評論。我徹底明白錯誤的重點。然而,有沒有人知道爲什麼編譯器停止在那裏沒有檢查鑄造?考慮到如果演員已經被編譯器看到了,那麼它就會工作。 – Rollerball