JAVA问题:int x =1,y=2,z =3;则语句 y+=z- - /++x的值是:

为什么答案说是3.5呢,我也觉得是3啊!... 为什么答案说是3.5呢,我也觉得是3啊! 展开
 我来答
百度网友b1d35fd81
推荐于2018-04-20 · TA获得超过180个赞
知道小有建树答主
回答量:108
采纳率:0%
帮助的人:154万
展开全部
x=2,y=3,z=2
月亮望见了小鱼的结果正确,过程分析不对。woniu157的结果就错了。
都是因为++和--这两个运算符。递增和递减运算符出现在变量的前面和后面时优先级是不一样的。出现在变量前时,优先级最高要先算递增、递减的值,再参与其他运算符号的操作。出现在变量后时,优先级降低,先参与其他运算符号的运算,再算递增、递减。
y+=z--/++x;这里要注意的就是这两个递增和递减运算。
++x要先算,所以x就已经先等于2了。
然后是z--/2,刚才说了--在z 后面,所以先算/,就是3/2,结果等于1,之后z才--,z等于2。
最后y+=1;y的值为3.
月亮望见了小鱼
2011-12-13 · TA获得超过134个赞
知道答主
回答量:167
采纳率:0%
帮助的人:153万
展开全部
值应该是y=3 x=2 z=2吧
因为y=y+z--/++x
z--=3
++x=2
y=2
y+z--/++x=2+3/2=3
此时 x=2 z=2
其实楼主吧结果输出一下完全就知道了啊...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
濮冰枫60
2011-12-13 · TA获得超过235个赞
知道小有建树答主
回答量:470
采纳率:0%
帮助的人:309万
展开全部
这其实就是优先级的问题
首先++,--优先级高于*,/故应先算z++和++X所以这句可以转换为
y=y+(z++)/(++x)
y=4;
x=2;
z=4;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liubird
2011-12-14 · TA获得超过1932个赞
知道小有建树答主
回答量:898
采纳率:100%
帮助的人:930万
展开全部
这一句相当于 y = y + (z--) / (++x) = 2 + 3/2= 3
运算完之后,z=2, x=2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
_ChenGuang
2011-12-14
知道答主
回答量:17
采纳率:0%
帮助的人:5.5万
展开全部
我运行过了x=2;y=3.5;z=2.本来我觉得就是这个结果,为保险起见我运行了一下证明了我的答案!希望会对你有帮助!
追问
理由呢,能不能说一下原理是什么?
追答
那好,我就给你解释一下!x,z就不用说了吧,大家的答案都一致,那就给你讲一下y的值,首先得理解单目运算符是怎么运算的,比如说一个变量k,++k的意思是先自增再参与运算,k++的意思是先参与运算再自增。所以说 y+=z- - /++x也就是说z--=3;++x=2;z- - /++x=1.5;y=y+z- - /++x=3.5!明白了吧?!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式