1 public class Foo {
2 public static void main(String[]a){
3 foo(1000000000); // output: 1000000000
4 foo(1000000000 * 10); // output: 1410065408
5 foo((long)1000000000 * 10); // output: 10000000000
6
7 long l = 1000000000 * 10;
8 foo(l); // output: 1410065408
9 //long m = 10000000000; // compile error
10 }
static void foo(long l){
System.out.println(l);
}
}
爲什麼第4行輸出:1410065408而不是10000000000?爲什麼編譯器需要很長的時間來處理int?
爲什麼第9行是編譯錯誤?編譯器不能創建Long
,因爲預期類型是Long
?
奇怪,(INT * INT)沒有得到晉升爲長時,結果會溢出的int 。 – Scooter 2012-08-11 06:27:42