为了账号安全,请及时绑定邮箱和手机立即绑定

带替换的后增量

带替换的后增量

梵蒂冈之花 2021-05-09 12:15:27
我已经在这里提出了一个问题,但我想将其扩展为带有示例的增量char a = 'D';int b = 5;System.out.println(a++/b+--a*b++);作为该问题的答案之一是:(68 / 5) + (68 * 5) 和b ++对此没有影响。我的疑问是,如果b ++不起作用,那么为什么a ++起作用?理想情况下应该步骤1: (68/b+--a*b++);现在a = 69;第2步: (68/b+--a*5)现在a = 69; b = 6;第三步: (68/b+68*5)第四步: (68/6+68*5)回答351,但得到的答案是353
查看完整描述

2 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

不要将评估顺序与优先顺序混淆。


评估顺序指出操作数始终从左到右执行。


优先级指出*和/ 运算符在+和之前应用-,除非被括号覆盖。


所以,你说得对,a++/b+--a*b++手段(a++ / b) + (--a * b++)。这是优先事项。


由于数字运算符将值提升为int(在这种情况下),所以您也说对了,这char a = 'D'是对的int a = 68。


所以:


(a++ / b) + (--a * b++)    a = 68   b = 5

(68  / b) + (--a * b++)    a = 69   b = 5

(68  / 5) + (--a * b++)    a = 69   b = 5

(68  / 5) + (68  * b++)    a = 68   b = 5

(68  / 5) + (68  * 5  )    a = 68   b = 6

13        + 340            a = 68   b = 6

353                        a = 68   b = 6

如您所见,b++确实有一个作用:执行表达式b 后的值。


查看完整回答
反对 回复 2021-05-26
?
潇湘沐

TA贡献1816条经验 获得超6个赞

步骤4:(68/6 + 68 * 5)这是您的错!b在计算中的所有位置均为5,而不是其值6。

所以我们有:

步骤4:(68/5 + 68 * 5)=(13 + 340)= 353


查看完整回答
反对 回复 2021-05-26
  • 2 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信