为了账号安全,请及时绑定邮箱和手机立即绑定

为什么会有从小到大的溢出?

为什么会有从小到大的溢出?

慕仙森 2022-06-23 20:42:14
我的一本 Java 书表明,从小类型到大类型的转换会自动发生,只有从更宽类型到更小类型才需要转换。如果这是真的,那么为什么下面的代码(其中 int 超过 1,因此需要 long)导致溢出而不是类型的扩大?int value = 2147483647 + 1; System.out.println(value);=> -2147483648
查看完整描述

1 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

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

例如:

1L + 1L

将产生一个long值为2.

但是你的例子:

2147483647 + 1

将产生一个int值为-2147483648. 因为两者都是int他们会留下来的int

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

2147483647 + 1L

得到一个long具有价值的2147483648


查看完整回答
反对 回复 2022-06-23
  • 1 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信