看到一个题目:short s1=1;s1=s1+1;有错吗?short s1=1;s1 += 1;有错吗?
答:
对于short s1 = 1;s1=s1 + 1;由于1是int类型因此s1+1运算结果也是int类型,需要强制转换成short类型才能复制给shot类型。而short s1=1;s1 +=1;可以正确编译,因为s1 + =1;相当于 s1 = (short)(s1+1);其中有隐含的强制类型转换。
分析:
可以看出short s1 = 1是可以执行成功的
s1 = s1 + 1呢?
可以看出来,是不行的,因为s1是short类型的而1是int类型的。
可以这样子改:
short s1 = 1;
s1 = (short) (s1 + 1);
还可以写成:
s1 += 1;
“s1 += 1” 就等于上面的“s1 = (short) (s1 + 1)”这个的用法。