2011-03-04 118 views
4

這必須是非常愚蠢的,但是,我想做到以下幾點:的Java龍將不打印正確

long mult = 2147483647 + 2147483647 + 2; 
System.out.println(mult); // result = 0 

現在,我varaible mult將是一個10位數字,以及在長期範圍內。所以我不明白爲什麼它打印出0。誰能解釋爲什麼?

回答

12

由於三個常量值爲int s,因此算術是用int而不是long完成的。您分配給long變量的事實是無關緊要的。試試這個:

long mult = 2147483647L + 2147483647L + 2L; 

你也許可以用做只是文字,如果你很小心很長的文字之一逃脫 - 但我個人將它應用到所有的人,只是要清楚,你想要一切的算術運算long

+0

偉大的作品,謝謝!我不知道我的常量被視爲整數 – f20k 2011-03-04 14:29:25

3

如何:

long mult = 2147483647L + 2147483647 + 2; 
1

那是因爲當你給任何數量的直接像num1 + num2他們被視爲整數,因爲該值是出在這種情況下邊界的你將得到0或取決於其他輸出輸入。

您可以輕鬆地通過改變解決這

long mult = 2147483647; 
mult += 2147483647; 
mult += 2; 
System.out.println(mult);