我是Java的新手(4周,每周4天),之前没有编程知识。有人可以解释这是如何打印32?
int a = 10;
a = a++ + a + a-- - a-- + ++a;
System.out.println(a);
答案 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)
让我们一步一步。
a++
将逐一增加。a++ +a
将获取(11)+现有的a(10),以获得21 - a--
将从a中减去1,并从该值中减去该值。所以-9,a
会递增。因此,在其他所有事情都计算之前,它就会变成11。最重要的是,这简化为:
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;
将加倍。
希望这会有所帮助,卢克。