【发布时间】:2015-04-07 08:55:41
【问题描述】:
在java中假设我有以下代码sn-p
byte b = 127;
b=-b ;//(which require a cast due to numeric promotion)
b=++b; //does not require cast
【问题讨论】:
标签: java operators integer-promotion
在java中假设我有以下代码sn-p
byte b = 127;
b=-b ;//(which require a cast due to numeric promotion)
b=++b; //does not require cast
【问题讨论】:
标签: java operators integer-promotion
++ 的 JLS 规范说:
前缀自增表达式的类型就是变量的类型。
.... 在加法之前,对值 1 和变量的值执行二进制数字提升(第 5.6.2 节)。 如有必要,总和会通过缩小原语转换 (§5.1.3) 缩小和/或在存储变量之前进行装箱转换 (§5.1.7) 到变量的类型。前缀递减表达式的值是新值存储后变量的值。
(术语“缩小原始转换”是指类型转换......)
参考:JLS 15.15.1。
因此++b 是byte,不需要显式转换。
【讨论】: