跳出循环的三种方式

break、continue、goto三个关键字都可以用于跳出循环,但三者跳出循环的情况却有所不同
braek:跳出本层循环,执行本层循环下面的语句。
continue:终止本次循环,进入下一次循环。
goto:调到标号所在位置,执行标号下面的语句,它比较方便的是可以一次跳出多重循环,但是它只能在函数内跳转,不能在函数间跳转。goto语句有一定的弊病,会使程序的流程变得混乱,有时会难以理解,并且程序的调试与排错也会变得复杂。

#include<stdio.h>

int main()
{
    int num = 0;
    int i = 0;
    for (int i = 0; i < 10; i++)
    {
        if (num == 5)
        {
            break;
            num += 2;  
        }
        num += 1;
    }
    printf("%d\n", num);
    system("pause");
    return 0;
}

输出结果为5。
当num =5时,程序直接跳出循环,执行输出语句,故输出为5。

#include <stdio.h>

int main()
{
    int num = 0;
    int i = 0;
    for (int i = 0; i < 10; i++)
    {
        if (num == 5)
        {
            num += 2;     //此处要是不加这条语句,num会一直等于5,使之后每次进入循环时都会从此处
                          //终止而进入下一次循环,num的值不再改变
            continue;

        }
        num += 1;
    }
    printf("%d\n", num);
    system("pause");
    return 0;
}

输出结果为11。
当num = 5时,程序先给num加2(避免以后每次进入时num还为5,会一直continue直到循环结束),终止本次循环,进入下一次循环,直到i = 10时跳出循环,执行输出语句,境分析也可得处输出为11.

#include<stdio.h>

int main()
{
    int num = 0;
    int i = 0;
    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j < 10; j++)
        {
            if (num == 20)
            {
                goto logo;
            }
            num += 1;
        }

    }
    logo:
    printf("%d\n", num);
    system("pause");
    return 0;
}

输出结果为20。
当num = 20时,程序进入if语句块,执行goto语句,使程序执行位置跳转到goto语句标号所在位置的下一条语句去,即输出语句,因此程序输出为20。

在 SQL 中,跳出 `WHILE` 循环方式有多种实现形式。以下是三种常见的方法用于提前终止循环的执行: 1. **使用 `BREAK` 语句** 在 T-SQL 或 PL/SQL 中可以直接通过 `BREAK` 来立即退出当前所在的 `WHILE` 循环结构[^3]。一旦遇到该命令,则不再继续后续迭代过程而转向执行紧跟在外围的一条可执行语句。 ```sql DECLARE @i INT; SET @i = 0; WHILE (@i < 10) BEGIN PRINT 'Current Value : ' + CONVERT(VARCHAR, @i); IF @i = 5 BREAK; -- 当 i 达到 5 时,直接跳出循环 SET @i += 1; END ``` 2. **修改循环条件使其不成立从而自然结束循环** 另一种策略是在适当时候调整影响判断逻辑的关键参数值使得下一轮检测失败进而自动停止重复动作[^2]。这种方式不需要显式的 break 操作而是依赖于布尔表达式的评估结果决定何时终止流程。 ```sql CREATE TABLE #temp(xh INT); DECLARE @j INT; SET @j = 1; WHILE @j <= 80 AND @j != 7 /* 修改此处以模拟中途退出 */ BEGIN INSERT INTO #temp VALUES(@j); SET @j += 1; END DROP TABLE #temp; ``` 3. **借助异常处理机制或者外部标志位控制** 此外还可以考虑引入额外的状态变量作为指示灯配合 CASE WHEN 结构共同作用达成目的;亦或是捕捉特定类型的错误事件触发即时撤退行为[^1]。这种方法相对复杂些但提供了更大的灵活性特别是在嵌套层次较深的情况下尤为有用。 ```sql DECLARE @k NUMBER; BEGIN @k := 0; <<outer_loop>> LOOP <<inner_block>> BEGIN @k := @k + 1; IF MOD(@k, 2) = 0 THEN EXIT outer_loop; -- 遇偶数即刻脱离最外围的大圈 END IF; DBMS_OUTPUT.PUT_LINE('Odd Number:' || TO_CHAR(@k)); EXCEPTION WHEN OTHERS THEN NULL; -- 忽略任何可能发生的意外状况保持正常流转直至人为干预为止 END inner_block; END LOOP outer_loop; END; ``` 以上就是关于如何在不同场景下的 SQL 实现中有效管理并适时中断持续运转着的 WHILE 循环节奏的具体介绍及其相应实例演示说明。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值