为什么循环退出后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 = 7i <=

maxCounter而将其用作循环不变式。

以上是 为什么循环退出后for / while循环变量增加1?有害的副作用 的全部内容, 来源链接: utcz.com/qa/398801.html

回到顶部