2014-11-08 68 views

回答

1

簡短的回答 - 不,它不會 - 它會告訴你,發生了精確損失!因爲Java是一種強類型語言(如果需要,我願意對其進行更正),您需要明確維護您的類型爲lvalus和rvalues。使用如下:

(這些都不行代碼 - 簡單的解釋)

int res = int var1 % int var2; // res as modulo of var1 and var2 (all int, no loss) 


long res = int var1 % int var2; /* res as modulo of var1 and var2 (res size is bigger, 
           * no loss) */ 

long res = long var1 % int var2; /* res as module of var1 and var2 (the divider is 
           * smaller size than dividend and quotient, so no 
           * problem */ 

,否則就是失去精度。另外,當使用模%符號時,左值的安排是重要的。

long只是將範圍從32位擴展到64位。這就是爲什麼當你混合它們而不平衡lvaluervalue(關於「=」運算符和%運算符) - 編譯器complians。對於您的情況,除非您正在執行特定的按位操作,否則不要使用不必要的long。我建議儘可能使用短褲(如果你需要32位那麼大的東西,則需要int)。

+0

謝謝,它幫助了我。讚賞 – 2014-11-08 16:46:05

+0

@MartinPlávek很高興幫助:)。它可能會幫助你,如果你也讀了這個 - http://stackoverflow.com/questions/1079785/whats-an-example-of-duck-typing-in-java – ha9u63ar 2014-11-08 16:47:46

相關問題