首页 新闻 会员 周边

short s1 = 1; s1 = s1 + 1;和 short s1 = 1; s1 += 1;哪个是错的

0
悬赏园豆:10 [已解决问题] 解决于 2012-07-04 14:45

s1 = s1 + 1和s1 += 1的区别是什么,标题中哪个是错的?谢谢,共俩问题,答全马上给分谢

觉信的主页 觉信 | 初学一级 | 园豆:66
提问于:2012-07-04 14:21
< >
分享
最佳答案
0

这个 涉及到int 和short 转换的问题。第一个是错误的。第二个应该是正确的。

收获园豆:10
無限遐想 | 老鸟四级 |园豆:3740 | 2012-07-04 14:24

理由谢啦

觉信 | 园豆:66 (初学一级) | 2012-07-04 14:29

@觉信: short +1的话,1默认是int类型。short 和 一个int相加 ,会得到int类型的。

第二个,实现原理不一样,是short的自增加,实现原理不一样。

無限遐想 | 园豆:3740 (老鸟四级) | 2012-07-04 14:32

@無限遐想: 

第二个也 会转成 int相加

Qlin | 园豆:2403 (老鸟四级) | 2012-07-04 14:52
其他回答(3)
0

 s1 = s1 + 1; s1 = (short)(s1 + 1)-------是int类型的;

Angkor--:-- | 园豆:1086 (小虾三级) | 2012-07-04 14:38
0

s1=s1+1这个等号的左边是short,等号右边的结果是int(不知道为什么),int是不能隐式转换为short的,所以右边不能赋值给左边.

而第二个+=左右两边都是short所有没错.

zhangweiwen | 园豆:904 (小虾三级) | 2012-07-04 14:44
0

两个 都会转成 int 相加,第二个 没有报错是由于  运算符的问题。

+= 只计算一次,     =      + 是两个运算符了,计算两次,所以报错了。

Qlin | 园豆:2403 (老鸟四级) | 2012-07-04 14:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册