java - 添加两个整数时 Java 中的意外输出

标签 java

<分区>

我是java语言的新手,这里我无法理解,为什么程序在添加两个完整范围的整数后返回-2。

class Variables {
    public static void main(String[] args) {
        int a = 2147483647;
        int b = 2147483647;
        long c = a + b;
        System.out.println( c );
    }
}

我在我的变量 c 中期望 4294967294 值,但为什么它返回 -2 请解释一下这背后的原因

最佳答案

您达到了 Integer.MAX_VALUE,所以您将到达 -2147483648,然后再次添加 Integer.MAX_VALUE 将得到 -2

要获得 4294967294,您需要先将一个值转换为 long 才能执行 long 求和而不是 int一个

int a = 2147483647;
System.out.println(a + 1); //-2147483648

int b = 2147483647;
System.out.println(a + b); // -2

long c = a + (long) b; // or ((long) a) + b;
System.out.println(c); //4294967294

关于java - 添加两个整数时 Java 中的意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60791518/

相关文章:

java - HashSet<Integer> 的初始容量

java - UTF-8 和 ISO 8859-1 之间的转换 :

java - dbpedia/flash 如何?

java - 将 switch 与子类一起使用?

java - 对于数组中的键进行二分查找,lo 或 hi 的最终值是多少?

java - 如何改变 JTextArea 中只有一个字符串的大小?

java - 开始 Activity 未开始

Java 内存模型 - 有人可以解释一下吗?

java - volatile 和线程安全

java - 如何将 HashMap 显示为空 {} 而不是 null