Skip to content

中断

  • 循环和 switch 专属的跳转:break
  • 循环专属的跳转:continue
  • 无条件跳转:goto

break

  • 循环的 break 说明

    某一条件满足时,不再执行循环体中后续重复的代码,并退出循环

  • 需求:一共吃 5 碗饭,吃到第 3 碗吃饱了,结束吃饭动作

  • 示例代码:

c
#include <stdio.h>

int main() {
    // 需求:一共吃 5 碗饭,吃到第 3 碗吃饱了,结束吃饭动作
    // 1. 定义条件变量,为了查看方便,计数器从 1 开始
    int i = 1;
    while (i <= 5) { // 2. 控制条件
        if (i == 3) {
            printf("吃饱了,不吃了\n");
            break; // 结束循环,退出循环
        }

        printf("吃第 %d 碗饭\n", i);
        // 3. 条件变量改变
        i++;
    }

    return 0;
}

continue

  • 某一条件满足时,不再执行本次循环体中后续重复的代码,但进入下一次循环判断

    while 循环,continue 之前一定要修改计数器 (条件变量),否则,导致死循环

  • 需求:一共吃 5 个苹果,吃到第 3 个遇到虫子,这个跳过不吃,下一个继续

  • 示例代码:

c
#include <stdio.h>

int main() {
    // 需求:一共吃 5 个苹果,吃到第 3 个遇到虫子,这个跳过不吃,下一个继续
    // 1. 定义条件变量,为了查看方便,计数器从 1 开始
    int i = 1;
    while (i <= 5) { // 2. 控制条件
        if (i == 3) {
            printf("这个有虫子,不吃了\n");
            i++;    // continue 之前一定要修改计数器 (条件变量),否则,导致死循环
            continue;; // 跳过本次循环,下次继续
        }

        printf("吃第 %d 个苹果\n", i);
        // 3. 条件变量改变
        i++;
    }

    return 0;
}

goto

  • goto 用于无条件跳转

    在一种情况下可以使用 goto 语句:从一组嵌套的循环中跳出

  • goto 语句可以导致代码不易理解和维护,并且容易引入不必要的错误。因此,除非必要,最好不要使用 goto 语句

  • 示例代码:

c
#include <stdio.h>

int main() {

    int i = 0;
    while (i < 3) {
        if(i == 1) {
            goto End;	// 跳转到 End 标签
        }
        printf("i = %d\n", i);
        i++;
    }

    End:
        printf("this is ending!\n");

    return 0;
}