short s=1;
s=s+1; //false
因为1为int类型,s为short类型,当s与1相加时,short类型会自动转化为int类型(向上转型),所以右边就为int类型,左边用short类型接收int类型,错误
s+=1; //true
+= 是一个运算符,只运算一次,并带有强制转换的特点,
也就是说 s += 1 就是 s = (short)(s + 1) ,因此程序没有问题编译通过
short s=1;
s=s+1; //false
因为1为int类型,s为short类型,当s与1相加时,short类型会自动转化为int类型(向上转型),所以右边就为int类型,左边用short类型接收int类型,错误
s+=1; //true