這必須是非常愚蠢的,但是,我想做到以下幾點:的Java龍將不打印正確
long mult = 2147483647 + 2147483647 + 2;
System.out.println(mult); // result = 0
現在,我varaible mult
將是一個10位數字,以及在長期範圍內。所以我不明白爲什麼它打印出0。誰能解釋爲什麼?
這必須是非常愚蠢的,但是,我想做到以下幾點:的Java龍將不打印正確
long mult = 2147483647 + 2147483647 + 2;
System.out.println(mult); // result = 0
現在,我varaible mult
將是一個10位數字,以及在長期範圍內。所以我不明白爲什麼它打印出0。誰能解釋爲什麼?
由於三個常量值爲int
s,因此算術是用int
而不是long
完成的。您分配給long
變量的事實是無關緊要的。試試這個:
long mult = 2147483647L + 2147483647L + 2L;
你也許可以用做只是文字,如果你很小心很長的文字之一逃脫 - 但我個人將它應用到所有的人,只是要清楚,你想要一切的算術運算long
。
如何:
long mult = 2147483647L + 2147483647 + 2;
那是因爲當你給任何數量的直接像num1 + num2
他們被視爲整數,因爲該值是出在這種情況下邊界的你將得到0或取決於其他輸出輸入。
您可以輕鬆地通過改變解決這
long mult = 2147483647;
mult += 2147483647;
mult += 2;
System.out.println(mult);
偉大的作品,謝謝!我不知道我的常量被視爲整數 – f20k 2011-03-04 14:29:25