簡單的代碼沒有問題簡單的Java整數和長算術
long x = Integer.MAX_VALUE;
System.out.println(x * 2 + "...." + Long.MAX_VALUE);
= 4294967294....9223372036854775807
但這裏發生了什麼?爲什麼-2
System.out.println(2 * Integer.MAX_VALUE + "...." + Long.MAX_VALUE);
= -2....9223372036854775807
爲什麼元素是149998,編譯器不會將這些元素轉換爲long嗎?
long elements = 2 * Integer.MAX_VALUE + 150000;
System.out.println(elements + "...." + Long.MAX_VALUE);
149998....9223372036854775807
-Thanks
它會在哪裏知道要轉換?在第三個表達式中,你根本不使用「long」......而在第二個表達式中,你不會使用它,直到它爲時已晚。 – cHao
你爲什麼認爲這是發生?爲什麼不應該這樣做? –