在Java中以长格式存储两个整数之和
我想做的基本上是将两个int值存储在两个变量中,然后将两个int操作的值存储在一个长的变量中。我的密码是:
int operand1 = 2147483647;
int operand2 = 1;
long longValue = operand1 + operand2;
我遇到的问题是,我需要longValue也等于2147483648,而不是-2147483648,因为它正在环绕它。我需要操作数1和2都保持为整数。非常感谢您的帮助
你可以在下面搜索框中键入要查询的问题!
我想做的基本上是将两个int值存储在两个变量中,然后将两个int操作的值存储在一个长的变量中。我的密码是:
int operand1 = 2147483647;
int operand2 = 1;
long longValue = operand1 + operand2;
我遇到的问题是,我需要longValue也等于2147483648,而不是-2147483648,因为它正在环绕它。我需要操作数1和2都保持为整数。非常感谢您的帮助
# 1 楼答案
把两个int都转换成long
# 2 楼答案
正如其他人所说,解决方案是将赋值的RHS(右侧)上的一个(或两个)操作数强制转换为
long
。当一个+
操作数为int
,另一个为long
时,JLS表示程序将把int
操作数转换为long
,并使用64位算术执行该操作在您编写的代码中,JLS表示应该使用32位算术将两个
int
值相加。当赋值时,32位到64位的转换随后发生# 3 楼答案
试试看
# 4 楼答案
仅强制转换第一个操作数1就足够了,即使操作数1=1,操作数2=2147483647,因为long+int自动转换为long