Sometimes loop condition should be checked in the middle of the loop. The former is arguably more elegant than the latter:
for (;;)
{
// precondition code that can change the value of should_end_loop expression
if (should_end_loop)
break;
// do something
}
Alternative:
bool endLoop = false;
for (; !endLoop;)
{
// precondition code that can set endLoop flag
if (!endLoop)
{
// do something
}
}
Note: In nested loops and/or switch
must use more than just a simple break
.