我刚刚意识到
int i=0;
System.out.println(i++);
打印0而不是1。我以为我增加了然后打印了。似乎相反的情况发生了。
为什么?
我刚刚意识到
int i=0;
System.out.println(i++);
打印0而不是1。我以为我增加了然后打印了。似乎相反的情况发生了。
为什么?
这些是前增量和后增量运算符。这种行为是完全正确的。
i++
返回原始值。++i
返回新值。当你这样做时i++
,直到下一条指令才会发生增量。这称为后期增量。
System.out.println(i++);
它应该首先打印 i 的值,然后增加 i。其后订单增量。
++i will print 1
i++ will print 0
i++
表示返回 i,然后递增。因此 ++ 在 i 之后。
++i
表示递增 i,然后返回。因此 ++ 在 i 前面
i++
=> 评估然后递增;++i
=> 增加然后评估。考虑一个for
循环 -i
在每次迭代后递增。
after 变量定义了++
一个后增量操作。这意味着在您执行完所有其他操作后, theni
会增加。如果您使用++i
该变量将在打印之前递增
您可以在此处找到:http: //docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html有两个递增运算符:i++ 和 ++i。++i 做了你认为 i++ 会做的事情。i++ 在用于其他目的后增加值(查看链接以获取更多详细信息)
因为赋予 的值System.out.println(i++);
首先分配为 0,然后递增。如果您尝试这样做,System.out.println(++i);
那么它将向您显示 1。