请解释" a - =(a - ) - ( - a)"

时间:2014-03-15 03:21:37

标签: java output

任何人都可以帮我解决这个问题 -

a-=(a--)-(--a)

当a的初始值为6时。

执行时的答案是4,但根据我的说法应该是-4。如果你能一步一步地向我展示,我将不胜感激。

3 个答案:

答案 0 :(得分:3)

a = 6
a -= (a--) - (--a)

相当于:

a = a - ((a--) - (--a))

首先评估右侧,从左到右:

a 1 - > a-- 2 - > --a 3 - > (a--)-(--a) 4 - > a-((a--)-(--a)) 5

  • 第1步:a评估为6。
  • 第2步:a--;评估为6,a变为5。
  • 第3步:--a;评估为4,a变为4。
  • 第4步:6 - 4;评估为2。
  • 第5步:6 - (6 - 4)评估为2。
  • 决赛:a = 6 - (6 - 4); a变为4。

答案 1 :(得分:1)

您的问题来自于与递增或递减运算符(前置或后置)相关的值的使用顺序。

在预递减情况下,值在变量(--a)之前递减,程序将a的值减1,然后THEN使用该值。

在后递减情况下,值在变量(a--)之后递减,程序取值a,然后THEN将值减1。

您的案例

当a = 6

  • a - =(任何东西)可写成a = a - (任何东西)

因此a = 6 - (任何事情)

  • 6-((a - ) - ( - a))
  • 请记住,(a--)的值为6,然后减少为5以供以后使用
  • 6 - (6) - ( - a)
  • 现在a为5.当我们评估(--a)时,我们将值减少为4,然后使用该值
  • 6 - (6) - (4)
  • 然后只评估
  • 6 - (2)
  • 4

答案 2 :(得分:0)

  • 第一个a--执行后减量,这意味着,a被采用 作为6,下次访问a时,它将是5
  • 但是从那以后 当下次访问a时,它为--a,a从5变为 4
  • 因此(a--)-(--a)变为(6)-(4),即2
  • 然后,a-=2 已评估,a在评估6时为a-=,因此6-24