为什么循环退出后for / while循环变量增加1?有害的副作用
这是代码-
int i = 0;System.out.printf( "\n%d\n\n", i ); // show variable i before loop
for( i = 0; i < 8; i++ )
{
System.out.printf( "%d\t", i );
}
System.out.printf( "\n\n%d\n", i ); // show variable i after loop
这是输出-
0
0 1 2 3 4 5 6 7
8
当我想在for循环退出后使用变量i时,出现了我的问题。我会假设我正在读取7,即从零开始的计数中的第8个增量,但实际上是8!在循环退出时对变量i又增加了一个增量。
为了解决这个问题,我必须在循环的末尾以及在其他任何代码中使用它之前,先执行类似i的操作。在我看来,这使代码更难理解。
有更好的解决方案吗?
回答:
当i
值为7时,条件i < 8
仍然满足,因此没有理由退出循环。
在循环之前声明循环变量并在之后再使用它并不是很清楚。而是考虑使用loop语句声明循环变量。
int numIterations = 8;for(int i = 0; i < numIterations; i++) {
// ...
}
// continue doing something with numIterations, or numIterations-1
如果numIterations-1
确实让您感到困扰,您也可以改为使用int maxCounter = 7
,i <=
maxCounter而将其用作循环不变式。
以上是 为什么循环退出后for / while循环变量增加1?有害的副作用 的全部内容, 来源链接: utcz.com/qa/398801.html