使用运算符++和 - 在java中,困惑

时间:2014-03-19 19:37:49

标签: java math operations

我是Java的新手(4周,每周4天),之前没有编程知识。有人可以解释这是如何打印32?

int a = 10;
a = a++ + a + a-- - a-- + ++a;
System.out.println(a);

5 个答案:

答案 0 :(得分:3)

a ++>意味着使用然后改变..因此,a的值首先使用= 10然后递增= 11

++ a>意味着改变然后使用。因此首先改变a的值然后使用。

所以a = a ++ + a + a - - a-- + ++ a;

 = (10) 
   + (11 [since a is incremented after use]) 
   + 11 [since a-- = use then change = 11, after -- becomes 10] 
   - 10 [since value of a is now decremented, and then decremented again, so a = 9 at this point] 
   + 10 [since ++a is change then use]

摘要

a = 10 + 11 + 11 - 10 + 10 = 32. 

希望有所帮助:)

答案 1 :(得分:1)

简单:

a = 10 + 11 + 11 - 10 + 10 = 32.  

括号添加更清晰:

a = (a++) + (a) + (a--) - (a--) + (++a);

答案 2 :(得分:1)

让我们一步一步。

  1. a++将逐一增加。
  2. a++ +a将获取(11)+现有的a(10),以获得21
  3. 另一次迭代将a设置为30,最后减少1。
  4. - a--将从a中减去1,并从该值中减去该值。所以-9,
  5. 这是真正的伎俩。在任何其他操作开始之前,a会递增。因此,在其他所有事情都计算之前,它就会变成11。
  6. 最重要的是,这简化为:

    4*a-a-2+1 = 3*a-1,其中a = 11,因为它在任何开始之前已经递增(++ a)。

    如果您将++移动到++a的另一侧,那么您将拥有29,这更容易理解它来自何处。

答案 3 :(得分:0)

++和 - 的评估基于它们与变量的关系,如果是++,则首先评估a,然后递增。如果你有++ a,则增加a然后进行评估。

所以a + + + +将取一个并添加它,然后递增它, 而, ++ a + b将首先递增a,然后将其添加到b。

答案 4 :(得分:0)

简单

public static int i = 10;

表示整数i的值为10.

然后说

i++;

将使我的值为11,所以就像说10 + 1

i--;

会使我的值为9,所以就像说10 - 1。

然后

i = i + 1;

将与i++;

相同

但在大多数情况下,它与i = i + 20;一样使用它的值并为其添加20。

同样适用于

i = i - 20;

但是带走而不是添加。

然后

a + a;

将加倍。

希望这会有所帮助,卢克。