我的意思是:
for (int i = 0; i < 10; i++)
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)
和
for (int i = 0; i < 10; ++i)
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)
将产生相同的结果.是++i没有评估,一直到第一循环完成?
因为你的for循环等价于:
int i = 0;
while (i < 10) {
System.out.println(i);
i++;
}
Run Code Online (Sandbox Code Playgroud)
在下一次迭代检查条件之前,在结束时评估后增量操作或预增量操作(并丢弃其返回值).
如果使用返回值,它们将完全不同.以下代码等同于上面的循环:
int i = 0;
while (i < 10) {
System.out.println(i);
i = ++i; // pre
}
Run Code Online (Sandbox Code Playgroud)
...但是这段代码创建了一个无限循环(i永远不会增加):
int i = 0;
while (i < 10) {
System.out.println(i);
i = i++; // post
}
Run Code Online (Sandbox Code Playgroud)
警告:最后两个示例是特定于Java的.C和C++中的行为是未定义的,两者在编译器上可能完全相同.
| 归档时间: |
|
| 查看次数: |
1773 次 |
| 最近记录: |