让我们首先关注看起来异常的行:
val =+ ++i;
此处的运算符是
=(分配),
+(一元加号)和
++(预递增)。没有
=+操作员。Java将其解释为两个运算符:
=和
+。添加适当的空格会更清楚:
val = + ++i;
现在让我们分析处理过程:
第一次迭代:
val和
i是
0。
i预先增加到
1,这就是的结果
++i。一元
+不执行任何操作,
1而是分配给
val。然后出现迭代语句
val++,现在
val是
2。
i仍然为
1,因此
for满足了循环条件并发生了第二次迭代。
第二次迭代:
i再次预先增加到
2。一元
+什么也不做,
val被分配
2。迭代语句
val++再次出现,现在是
3。但
i现在是
2,而且比不小于
2,这样的
for循环终止,并且
val-
3-打印。



