面试题:
(1) short s = 1 ; s = s + 1;
(2)short s = 1 ; s+=1;
上面两个代码有没有问题,如果有,哪里有问题?
(1)s为short类型,参与运算时候要转换为int类型,所以一个int类型赋值给一个short类型,运行时会报错。
(2)为什么第二个没有问题呢?
扩展的赋值运算符其实隐含了一个强制类型转换。
s +=1;
不是等价于s = s+1;
而是等价于s = (s的数据类型)(s+1);
所以不会报错。
面试题:
(1) short s = 1 ; s = s + 1;
(2)short s = 1 ; s+=1;
上面两个代码有没有问题,如果有,哪里有问题?
(1)s为short类型,参与运算时候要转换为int类型,所以一个int类型赋值给一个short类型,运行时会报错。
(2)为什么第二个没有问题呢?
扩展的赋值运算符其实隐含了一个强制类型转换。
s +=1;
不是等价于s = s+1;
而是等价于s = (s的数据类型)(s+1);
所以不会报错。