增加运算符值(java)?

时间:2013-10-13 20:47:47

标签: java increment operator-keyword

为什么以下不执行到5?

int i = 5;
System.out.println(i-- + (5 - i--));

输出:

6

由于i--在执行语句后递减并且(5 - i - (应该是5))= 0那么该值是否应该简单地等于5?我在这里错过了什么概念?

4 个答案:

答案 0 :(得分:2)

踢球

i--              + (5 - i--)
5 (i value is 4) + (5 - 4 (i value is 3))
5 + 1

i--后缀递减操作的结果是--之前的变量的值。但是,在评估变量之后,该变量仍然会递减。

来自Java Language Specification

  

后缀减量表达式的结果不是变量,而是   价值。

  

从变量和值的值中减去值1   差异存储回变量。

答案 1 :(得分:0)

方程式的评估从从左到右

完成
  最左边的时候(i--因为后期减少而遇到了   将使用值5,然后减1。   同样,   当遇到下一个i--时,值为4 ..

因此,

  

(5 +(5-4)= 6

答案 2 :(得分:0)

从左到右进行评估,我们有:

a = i--

b = 5 - i--

c = a + b

a = 5因为 - 是后递减。
b = 5 - 4(已经递减,此操作将在另一次递减之后)

a + b = 6

答案 3 :(得分:0)

i--操作先于其他所有人,see the order here

所以会发生的事情是我先减少,每次你到达i--然后所有其他的东西都会发生,就像你知道的那样。

如果你想更多地探索它:寻找这些答案:

  • i ++ + ++ i
  • - I ++
  • i-- - (i-- + i - )

非常有趣!