计算机运算中有两个规则 1.如s1=1和s1+=1这样的的等号右侧是常数表达式,这时候,可以int32到int16的隐式转换;2.另一个规则是:等号右侧的计算表达式默认推定为int32,哪怕是两个int16相加,它不能够隐式转换为int16。
s1 = s1 + 1;等号右侧是计算表达式,计算的结果根据规则2我们可以知道是int类型的,那么赋值给左边的short类型的s1就会报错。
s1 += 1 等号右侧是常数,这时候计算机可以把右侧的int类型隐式的转换为short类型,再赋给左侧的shor类型的s1,所以没有问题 |