如果整数运算子,拥有最少一个型别 long 的操作数时,那这运算会以 64-位精度来实现,而这数值运算子的结果是型别 long 的。如果其它的操作数不是 long,它会先被以数值升级(§5.6)宽化(§5.1.4)到型别 long。否则,运算会以 32-位精度来实现,而这数值运算子的结果是型别 int 的。如果有操作数不是 int,它会先被以数值升级宽化到 int 型别。
注意最后一句。
所以,a+(short)10运算完之后,要再次强制转换成short类型的才行。
a=(short) (a+(short)10);