本帖最后由 michael_wlq 于 2015-8-24 17:17 编辑
思考: short s = 3; s = s + 2; s + = 2; 有什么区别?
解答: s = s + 2 // 编译失败。该语句先做加法,再做赋值运算,分两步,首先s + 2中的s会被提升为int类型,运算后的结果还是int类型,int类型赋值给short类型会失精度,从而无法赋值给short类型,编译失败。 s + = 2 // 编译通过。因为+=运算符只做赋值运算,在给s赋值时,自动完成了强转操作,判断出int类型的5在short表示范围内,所以会先强制转换成short类型,然后赋值成功。
|