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

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


int value = 2147483647 + 1; 

System.out.println(value);


=> -2147483648


慕仙森
浏览 108回答 1
1回答

桃花长相依

在 Java 中,每当您计算两个数字时,都会使用较大的类型进行计算。结果也将是更大的类型。但是为此,该类型的值是什么并不重要。例如:1L + 1L将产生一个long值为2.但是你的例子:2147483647 + 1将产生一个int值为-2147483648. 因为两者都是int他们会留下来的int。因此,要使其long成为您想要的,您必须:2147483647 + 1L得到一个long具有价值的2147483648。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java