当前位置: 代码迷 >> J2SE >> short s1 = 一; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)
  详细解决方案

short s1 = 一; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)

热度:10047   发布时间:2013-02-25 00:00:00.0
short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)
short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型) 
short s1 = 1; s1 += 1;(可以正确编译)

------解决方案--------------------------------------------------------
s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。
------解决方案--------------------------------------------------------
这个问题和+=的运算功能有关
第一种方式:
short s1 = 1; s1 = s1 + 1;需强行转化
因为short s1=1在栈中开辟了一个short类型的空间;
而s1=s1+1;中s1是short类型,在栈中开辟了一个short类型的空间,而1是int类型,
int类型比short类型大,所以相加后的结果应为比较大的类型,把s1+1的结果赋予short类型的变量s1,固然需要强行转化;
第二种方式:
short s1 = 1; s1 += 1;(可以正确编译)
由于+=运算符有自加功能,定义short s1 = 1;时,开辟了一个空间,当通过+=运算符运算时,只是在原来的栈中进行运算;不需强行转化;
  相关解决方案