跳出当前循环的多种方法(如何跳出当前的多重嵌套循环)

一、break语句

在编写循环代码时,有时需要在某些条件下跳出循环,这时可以使用break语句。break语句可用于for、while和do-while循环。

    
for (int i = 0; i < 10; i++) {
    if (i == 5) {
        break; // 当 i = 5 时跳出循环
    }
    std::cout << i << std::endl;
}
    

上面的代码中,循环从0开始,当i等于5时跳出循环。执行上述代码,控制台将输出0到4这五个数字。

二、continue语句

continue语句用于跳过当前循环中的某一次迭代,直接进行下一次循环。continue语句同样可用于for、while和do-while循环。

    
for (int i = 0; i < 10; i++) {
    if (i == 5) {
        continue; // 当 i = 5 时跳过第5次循环
    }
    std::cout << i << std::endl;
}
    

上面的代码中,循环从0开始,当i等于5时跳过第5次循环。执行上述代码,控制台将输出0到9这十个数字,但不包括数字5。

三、return语句

在函数中使用return语句可以退出函数并返回一个值。当函数自身的递归或在一个循环中使用return时,可以达到跳出循环的目的。

    
int recursiveFunction(int n) {
    if (n == 0) {
        return 0; // 递归终止条件,返回0
    }
    return n + recursiveFunction(n - 1); // 递归调用
}
    

上面的代码是一个递归函数示例,当n等于0时,递归停止并返回值0。在递归调用时,每次将n减1,直到n等于0。函数返回的值是n加n-1加n-2+···+3+2+1的和。

四、throw语句

throw语句可用于抛出异常,当程序执行到throw语句时,将会跳出当前函数或代码块,并抛出异常,执行异常处理程序。

    
try {
    // 一些可能抛出异常的代码
    if (somethingWrong) {
        throw "something is wrong"; // 抛出异常
    }
}
catch (const char* msg) {
    // 处理异常
    std::cout << "Exception caught: " << msg << std::endl;
}
    

上面的代码中,try块内是一些可能抛出异常的代码。当somethingWrong满足某些条件时,将会抛出一个指定的异常。catch块内处理这个异常,可以输出异常信息到控制台上。

五、goto语句

goto语句允许跳转到程序中的另一个标签处。虽然goto语句有时会使程序结构变得混乱,但在某些情况下,例如在遇到错误时,使用goto语句有时是有用的。

    
for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 5; j++) {
        if (i == 3 && j == 2) {
            goto end_loop; // 跳到end_loop标签处
        }
    }
}
end_loop:
std::cout << "End of loop" << std::endl;
    

上面的代码中,有两重循环,当i等于3并且j等于2时,使用goto语句直接跳到标签处,即end_loop处。跳到标签处之后,程序将跳过循环,执行输出”End of loop”。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平