0

在java中假设我有以下代码片段

byte b = 127;
b=-b ;//(which require a cast due to numeric promotion)
b=++b; //does not require cast
4

1 回答 1

1

JLS 规范++说:

前缀增量表达式的类型是变量的类型。

.... 在加法之前,对值 1 和变量的值执行二进制数字提升(第 5.6.2 节)。如有必要,在存储变量之前,可通过缩小原语转换(第 5.1.3 节)和/或对变量类型进行装箱转换(第 5.1.7 节)来缩小总和。前缀递减表达式的值是存储新值后变量的值。

(术语“缩小原始转换”是指类型转换......)

参考:JLS 15.15.1

因此++b是 abyte并且不需要显式转换。

于 2015-02-07T05:35:12.863 回答