1

可能重复:
pre Decrement vs. post Decrement
++i 和 i++ 有什么区别?

我刚刚意识到

int i=0;
System.out.println(i++);

打印0而不是1。我以为增加了然后打印了。似乎相反的情况发生了。

为什么?

4

9 回答 9

12

这些是前增量和后增量运算符。这种行为是完全正确的。

  • i++返回原始值。
  • ++i返回新值。
于 2012-09-09T18:17:27.107 回答
2

当你这样做时i++,直到下一条指令才会发生增量。这称为后期增量。

于 2012-09-09T18:18:47.290 回答
2
System.out.println(i++);

它应该首先打印 i 的值,然后增加 i。其后订单增量。

  • i++ -> 后订单增量
  • ++i -> 预购增量
于 2012-09-09T18:19:12.800 回答
2
++i will print 1
i++ will print 0 
于 2012-09-09T18:19:29.537 回答
2

i++表示返回 i,然后递增。因此 ++ 在 i 之后。

++i表示递增 i,然后返回。因此 ++ 在 i 前面

于 2012-09-09T18:21:40.957 回答
1
  • i++=> 评估然后递增;
  • ++i=> 增加然后评估。

考虑一个for循环 -i在每次迭代后递增。

于 2012-09-09T18:18:58.337 回答
1

after 变量定义了++一个后增量操作。这意味着在您执行完所有其他操作后, theni会增加。如果您使用++i该变量将在打印之前递增

于 2012-09-09T18:19:02.003 回答
1

您可以在此处找到:http: //docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html有两个递增运算符:i++ 和 ++i。++i 做了你认为 i++ 会做的事情。i++ 在用于其他目的后增加值(查看链接以获取更多详细信息)

于 2012-09-09T18:20:01.143 回答
1

因为赋予 的值System.out.println(i++);首先分配为 0,然后递增。如果您尝试这样做,System.out.println(++i);那么它将向您显示 1。

于 2012-09-09T18:31:57.217 回答