任何人都可以解释为什么会发生这种情况
int i=0;
i=i++;
i=i++;
i=i++;
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)
它打印为零.
pol*_*nts 14
i++是一个后增量(JLS 15.14.2).它递增i,但表达式的结果是递增i 之前的值.将此值重新赋值i有效可使值i保持不变.
像这样分解:
int i = 0;
int j = i++;
Run Code Online (Sandbox Code Playgroud)
j == 0在这种情况下很容易理解为什么.现在,j我们用左手代替i.右手边的值仍然是0,这就是你进入i == 0你的代码片段的原因.
| 归档时间: |
|
| 查看次数: |
290 次 |
| 最近记录: |