什麼我想要做的兩個int值基本上是存儲在兩個變量,然後兩個整數的操作的值存儲在一個長的。代碼中,我已經是:存儲兩個整數的在相當長的總和在Java中
int operand1 = 2147483647;
int operand2 = 1;
long longValue = operand1 + operand2;
我遇到的問題是我需要的longValue等於太2147483648而不是-2147483648,因爲它是圍繞它包裝。我需要操作數1和2保持爲整數。任何幫助是極大的讚賞!
什麼我想要做的兩個int值基本上是存儲在兩個變量,然後兩個整數的操作的值存儲在一個長的。代碼中,我已經是:存儲兩個整數的在相當長的總和在Java中
int operand1 = 2147483647;
int operand2 = 1;
long longValue = operand1 + operand2;
我遇到的問題是我需要的longValue等於太2147483648而不是-2147483648,因爲它是圍繞它包裝。我需要操作數1和2保持爲整數。任何幫助是極大的讚賞!
這兩個投入多頭。
long longValue = ((long)operand1) + ((long)operand2)
int operand1 = 2147483647;
int operand2 = 1;
long longValue = (long) operand1 + operand2;
鑄僅第一操作數是足夠的,即使操作數1 = 1和操作數2 = 2147483647,因爲長+ INT autocasting到長。
正如其他人所說的,解決方案是將任務的RHS(右側)上的一個(或兩個)操作數投擲到long
。當操作數int
和long
有+
操作時,JLS表示程序將把int
操作數轉換爲long
並使用64位算術執行操作。
在爲你寫它的代碼中,JLS說兩個int
值應使用32位運算來添加。之後會發生32位到64位的轉換,因爲正在分配該值。
試試吧,
long longValue = new Long(operand1) + new Long(operand2);
當添加鑄整數長。 'long longValue =(long)operand1 +(long)operand2' – user