为什么` for(;;i++)`与Java中的` for(;;++i)`一样工作?
我的意思是:
for (int i = 0; i < 10; i++)
System.out.println(i);
及
for (int i = 0; i < 10; ++i)
System.out.println(i);
将产生相同的结果。在第一个循环完成之前,++i
是否根本不进行计算
你可以在下面搜索框中键入要查询的问题!
我的意思是:
for (int i = 0; i < 10; i++)
System.out.println(i);
及
for (int i = 0; i < 10; ++i)
System.out.println(i);
将产生相同的结果。在第一个循环完成之前,++i
是否根本不进行计算
# 1 楼答案
使用i++这意味着我将在使用后立即递增,++i意味着我将在使用前立即递增
y=1,i=2
y=2,i=2
在for循环的情况下,增量运算符的调用完全独立于它的求值时间,因此可以将其视为循环末尾的一条线
它是递增的,然后根据您的中心条件进行计算
# 2 楼答案
++i
和i++
的回报不同(它们的副作用相同:将i
增加1)。循环for(start; condition; step)
中有三个表达式,但它只查看condition
返回的值。虽然每次迭代都执行step
,但它只会删除结果,即step
的副作用才是最重要的# 3 楼答案
无论使用
i++
还是++i
都是相同的,因为返回值未使用。表达式在经过循环体之后,在计算延续条件之前求值。请注意,它们是两个独立的表达式。也就是说,它们不同于:这将为
i = 9
产生不同的结果# 4 楼答案
在
++i
和i++
之间只有细微的区别:i++
首先返回i的值,然后将其递增1李>++i
首先递增i的值,然后返回值李>因为返回值不用于任何东西,所以在这种情况下它并不重要
# 5 楼答案
你说得对。i++和++i产生相同的结果,因为它在迭代结束时被评估,而没有使用
# 6 楼答案
因为您的
for
循环等价于此:在下一次迭代检查条件之前,增量后或增量前操作在结束时进行评估(并丢弃其返回值)
如果使用返回值,它们会有很大的不同。以下代码相当于上面的循环:
。。。但是这段代码创建了一个无限循环(
i
从不递增):警告:最后两个示例是特定于Java的示例。C和C++中的行为是未定义的,并且编译器上的两个行为可能非常一致。