gpt4 book ai didi

java - 为什么从小数到大数会发生溢出?

转载 作者:行者123 更新时间:2023-12-02 10:15:11 25 4
gpt4 key购买 nike

我的一本 Java 书指出,从较小的类型到较大的类型的转换会自动发生,并且只有从较宽的类型到较小的类型才需要转换。如果这是真的,那么为什么下面的代码(其中 int 超出了 1,因此需要 long)会导致溢出而不是类型扩展?

int value = 2147483647 + 1; 
System.out.println(value);

=> -2147483648

最佳答案

在 Java 中,每当计算两个数字时,都会使用较大的类型进行计算。结果也将是更大的类型。但对于这一点,该类型的值是什么并不重要。

例如:

1L + 1L

将生成一个值为 2long

但是你的例子:

2147483647 + 1

将生成一个值为-2147483648int。由于两者都是 int,因此它们将保持 int

因此,要使其成为您想要的long,您必须:

2147483647 + 1L

获取值为 2147483648long

关于java - 为什么从小数到大数会发生溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54738361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com