use*_*547 14 java increment pre-increment post-increment
我对post ++和pre ++运算符感到困惑,例如在下面的代码中
int x = 10;
x = x++;
sysout(x);
Run Code Online (Sandbox Code Playgroud)
会打印10?
它打印10,但我预计它应该打印11
但是当我这样做的时候
x = ++x; instead of x = x++;
Run Code Online (Sandbox Code Playgroud)
它将按照我的预期打印11个,那么为什么x = x ++; 不改变x的值?
das*_*ght 16
不,10的打印输出是正确的.理解结果背后原因的关键是预增量++x和后增量x++化合物分配之间的差异.使用预增量时,表达式的值在执行增量后获取.但是,当您使用后递增时,表达式的值在递增之前获取,并在将递增结果写回变量之后存储以供以后使用.
以下是导致您所看到的事件的顺序:
x 被安排了 10++在后增量位置,存储x(即10)的当前值以供以后使用11存储的新值x10存储回来x,写在11那里存储的那个.Post Increment(n++):首先执行语句,然后将值加一。
Pre Increment (++n):先将值加一,然后执行语句。
例子:
class IncrementTest{
public static void main(String[] args){
System.out.println("***Post increment test***");
int n = 10;
System.out.println(n); // output 10
System.out.println(n++); // output 10
System.out.println(n); // output 11
System.out.println("***Pre increment test***");
int m = 10;
System.out.println(m); // output 10
System.out.println(++m); // output 11
System.out.println(m); // output 11
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6577 次 |
| 最近记录: |