爲什麼下面的代碼打印2147483647,實際值是2147483648?Java的int基本問題
i = (int)Math.pow(2,31) ;
System.out.println(i);
據我所知,最大正值一個int可以支持爲2147483647。那麼,爲什麼這樣的自動代碼換到消極的一面,並打印-2147483648?
i = (int)Math.pow(2,31) +1 ;
System.out.println(i);
我是Integer類型的。如果第二個代碼示例(添加兩個整數)可以包裝到負面,如果結果超出正範圍,爲什麼不能包裝第一個樣品? 此外,
i = 2147483648 +1 ;
System.out.println(i);
這是非常類似於第二代碼示例拋出編譯錯誤說第一字面超出整數範圍的? 我的問題是,根據第二個代碼示例,爲什麼第一個和第三個樣本不能自動換到另一側?
爲了澄清,這與java.lang.Integer無關,它與int不同。 – polygenelubricants 2010-08-14 11:37:26
這有什麼關係?問題(或問題)將會是相同的,即使我把它轉換爲(Integer)而不是int。 – chedine 2010-08-14 20:16:35