循环控制语句中断和继续

循环控制语句用于从正常顺序更改执行流程。当执行离开作用域时,将销毁在该作用域中创建的所有自动对象。breakcontinue 是循环控制语句。

break 语句终止循环而无需进一步考虑。

for (int i = 0; i < 10; i++)
{
    if (i == 4)
        break; // this will immediately exit our loop
    std::cout << i << '\n';
}

上面的代码将打印出来:

1
2
3

continue 语句不会立即退出循环,而是跳过循环体的其余部分并转到循环的顶部(包括检查条件)。

for (int i = 0; i < 6; i++)
{
    if (i % 2 == 0) // evaluates to true if i is even
        continue; // this will immediately go back to the start of the loop
    /* the next line will only be reached if the above "continue" statement 
       does not execute  */
    std::cout << i << " is an odd number\n";
}

上面的代码将打印出来:

1 is an odd number
3 is an odd number
5 is an odd number

由于这种控制流量的变化有时很难让人类容易理解,因此节省了使用 breakcontinue。更直接的实现通常更容易阅读和理解。例如,第一个带有 breakfor 循环可能会被重写为:

for (int i = 0; i < 4; i++)
{
    std::cout << i << '\n';
}

continue 的第二个例子可能被重写为:

for (int i = 0; i < 6; i++)
{
    if (i % 2 != 0) {
        std::cout << i << " is an odd number\n";
    }
}