2015-11-28 49 views
2

什麼我想要做的兩個int值基本上是存儲在兩個變量,然後兩個整數的操作的值存儲在一個長的。代碼中,我已經是:存儲兩個整數的在相當長的總和在Java中

int operand1 = 2147483647; 
int operand2 = 1; 
long longValue = operand1 + operand2; 

我遇到的問題是我需要的longValue等於太2147483648而不是-2147483648,因爲它是圍繞它包裝。我需要操作數1和2保持爲整數。任何幫助是極大的讚賞!

+8

當添加鑄整數長。 'long longValue =(long)operand1 +(long)operand2' – user

回答

2

這兩個投入多頭。

long longValue = ((long)operand1) + ((long)operand2) 
2
int operand1 = 2147483647; 
int operand2 = 1; 
long longValue = (long) operand1 + operand2; 

鑄僅第一操作數是足夠的,即使操作數1 = 1和操作數2 = 2147483647,因爲長+ INT autocasting到長。

1

正如其他人所說的,解決方案是將任務的RHS(右側)上的一個(或兩個)操作數投擲到long。當操作數intlong+操作時,JLS表示程序將把int操作數轉換爲long並使用64位算術執行操作。

在爲你寫它的代碼中,JLS說兩個int值應使用32位運算來添加。之後會發生32位到64位的轉換,因爲正在分配該值。

1

試試吧,

long longValue = new Long(operand1) + new Long(operand2); 
相關問題