有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中以长格式存储两个整数之和

我想做的基本上是将两个int值存储在两个变量中,然后将两个int操作的值存储在一个长的变量中。我的密码是:

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

我遇到的问题是,我需要longValue也等于2147483648,而不是-2147483648,因为它正在环绕它。我需要操作数1和2都保持为整数。非常感谢您的帮助


共 (4) 个答案

  1. # 1 楼答案

    把两个int都转换成long

    long longValue = ((long)operand1) + ((long)operand2)
    
  2. # 2 楼答案

    正如其他人所说,解决方案是将赋值的RHS(右侧)上的一个(或两个)操作数强制转换为long。当一个+操作数为int,另一个为long时,JLS表示程序将把int操作数转换为long,并使用64位算术执行该操作

    在您编写的代码中,JLS表示应该使用32位算术将两个int值相加。当赋值时,32位到64位的转换随后发生

  3. # 3 楼答案

    试试看

    long longValue = new Long(operand1) + new Long(operand2);
    
  4. # 4 楼答案

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

    仅强制转换第一个操作数1就足够了,即使操作数1=1,操作数2=2147483647,因为long+int自动转换为long