java,s+=1?

shorts=1;s=s+1;错误,s+=1;为什么正确?... short s=1;
s=s+1;错误,s+=1;为什么正确?
展开
 我来答
nanwang21
2015-10-08 · TA获得超过2943个赞
知道大有可为答主
回答量:1220
采纳率:82%
帮助的人:243万
展开全部
1、 short s=s+1
会出现编译错误。s+1的时候,结果会被“升格”为int类型。把int赋给short当然编译错误。

2、 s+=1
对于“+=”操作,系统会自动执行类型转换操作,等价于s=(short)s+1。

3、java的自动转型是从小到大,而100.2是一个int型的数,不会自动转成short类型的,而后者却会自动转。赋值运算的优先级最低,而+=的优先级就不一样了。
山楂小子
推荐于2016-08-11 · TA获得超过192个赞
知道小有建树答主
回答量:240
采纳率:0%
帮助的人:224万
展开全部
类型转换问题嘛,s是short型,s+1是short+int,java会自动将类型提升变换为int+int,所以得到的结果还是int,是无法将short=int+int的,需要做一个类型强制转换,s=(short)(s+1).
s+=1的意思不能跟上面那样理解,它表示的就是每次自增1,就好像s++,++s一样,无非这里指定了你每次自增的值是多少,你也可以写成s+=2,s+=3都可以的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
回家先睡觉
2009-05-24 · TA获得超过796个赞
知道小有建树答主
回答量:475
采纳率:0%
帮助的人:643万
展开全部
s=s+1是一个加法运算,里面的1是一个int,运算结果int不能对short变量赋值。
s+=1是一个增值运算,没有把计算结果并对变量赋值的步骤,所以正确。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
卡卡亚索隆
2009-05-24 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:142
采纳率:0%
帮助的人:147万
展开全部
按照书上理论来讲

这两个表达式都是正确的

s+= 即 s=s+
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
居凌貊梓玥
2016-08-16 · TA获得超过1236个赞
知道小有建树答主
回答量:1867
采纳率:92%
帮助的人:8.9万
展开全部
在java中我不怎么清楚。
但是在c++中s
+=
1的效率高
但是在c++中采用这种符合运算符,一是为了简化程序,使程序精练,二是为了提高编译效率,有利于编译,能产生质量较高的目标代码。如果你没有学过编译原理,就跳过这个问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式