2011-07-31 83 views
-1

可能重複:
Why int i = 2147483647 + 1; is ok, but byte b = 127 + 1; is not compilable?的Java編譯問題

林與Java初學者,所以請欣賞這初學者的問題。但是爲什麼我的編譯器在字節b = 127 + 1的時候沒有問題;但編譯罰款與詮釋我= 2147483647 + 1;

+4

這是一個笑話還是一個巧合? –

+0

康拉德,這可能是一個問題被問到一個學生大小的人類,那裏的人們然後獨立地問stackoverflow。我的猜測是,有些教授提到StackOverflow是他們學習計劃中的一個資源,或者它只是由於俱樂部/團體/等等而常見的口碑信息。所有重複的海報都是在幾分鐘到幾個小時內完成的,並且他們都沒有太多的聲譽。 –

回答

1

因爲當編譯器看到127時,它將它視爲int而不是字節。您需要進行強制轉換才能將結果重新輸入到一個字節中。

2

您的編譯器抱怨,因爲它看到兩個int被加在一起(int 127)和(int 1),然後它擔心一些精度會因爲試圖將結果(int 128)存儲到一個字節而丟失。

您選擇的數字傾向於暗示您認爲它與溢出有關。這不是,因爲編程時即使重要時要記住溢出,編譯器也不會抱怨溢出問題。