欢迎光临
我们一直在努力

嵌入式学习6

C语言循环与辅助控制语句(while/for/do-while/goto break/continue/return)

💡 学习核心:C语言四大循环语句 + 四大辅助控制语句,掌握循环逻辑、语法差异、使用场景及避坑要点,彻底搞定程序重复执行逻辑。

本文将从语法格式、执行流程、核心特点、适用场景、易错点全方位总结,适合零基础入门、查漏补缺,可直接收藏复习!

一、核心知识体系总览

C语言中实现代码重复执行的核心分为:循环语句(主体) + 辅助跳转语句(控制循环流程)

  • 循环语句:while、for、do-while、goto(无条件跳转循环)
  • 辅助控制语句:break、continue、return

二、四大循环语句详解(重点+注意点)

1、while 循环(先判断,后执行)

✅ 标准语法

while(循环条件){
// 循环体:重复执行的代码
// 迭代条件(更新变量,避免死循环)
}

✅ 执行流程
  • 先判断 循环条件,条件为真(非0)则执行循环体;
  • 执行完循环体,再次回到条件判断;
  • 条件为假(0),直接跳出循环。
  • ✅ 核心特点
    • 入口判断:条件不成立,循环体一次都不执行
    • 结构简单,适合循环次数不确定的场景
    ❌ 易错注意点
    • 必须在循环体内写变量迭代更新(i++/i–等),否则触发死循环
    • while 后不要随意加分号 while();,会导致循环体空执行
    • 循环条件避免恒真(除非刻意写死循环)

    2、for 循环(最常用,结构最规整)

    ✅ 标准语法

    for(初始化表达式; 循环条件; 迭代表达式){
    // 循环体
    }

    ✅ 执行流程(固定顺序)
  • 初始化表达式(仅执行1次)→
  • 判断循环条件 →
  • 为真执行循环体 →
  • 执行迭代表达式 → 重复步骤2
  • ✅ 核心特点
    • 将初始化、条件、迭代集中在一行,逻辑清晰
    • 首选用于循环次数确定的场景(遍历数组、固定次数循环)
    ❌ 易错注意点
    • for 循环的三个表达式可以省略,但两个分号 绝对不能省略
    • 省略循环条件:默认恒真,形成死循环
    • 初始化仅执行一次,不会在每次循环中重复执行
    • 不要在循环体内随意修改循环变量,容易打乱循环逻辑

    3、do-while 循环(先执行,后判断)

    ✅ 标准语法

    do{
    // 循环体
    // 迭代更新
    }while(循环条件);

    ✅ 执行流程
  • 无条件先执行一次循环体 →
  • 判断循环条件 →
  • 为真继续循环,为假跳出
  • ✅ 核心特点
    • 唯一至少执行一次的循环语句
    • 适合需要先执行、后校验的场景(用户输入校验、菜单交互)
    ❌ 易错注意点
    • 末尾的 分号必须写,语法强制要求,遗漏直接报错
    • 同样需要迭代变量更新,否则死循环
    • 区分 while:while 可能0次执行,do-while 最少1次

    4、goto 循环(无条件跳转,不推荐使用)

    ✅ 标准语法

    flag:
    循环代码;
    goto flag; // 跳转到flag标签位置,实现循环

    ✅ 核心特点
    • 无条件强制跳转,可实现任意位置跳转、循环
    • C语言保留语句,但开发中严禁滥用
    ❌ 注意点(重中之重)
    • 滥用goto会导致代码流程混乱、可读性极差、难以调试(面条代码)
    • 唯一推荐使用场景:多层循环嵌套,一次性跳出所有循环
    • 标签名必须合法,区分大小写,只能在本函数内跳转

    三、三大辅助控制语句详解

    1、break 语句(跳出循环)

    ✅ 作用

    强制 终止当前所在的循环/switch语句,直接跳出,执行循环后续代码。

    ✅ 核心规则
    • 只跳出 当前单层循环,嵌套循环无法一次性跳出全部
    • 可用于 for/while/do-while/switch
    ❌ 易错点

    break 只会终止最近的循环,外层循环继续执行;嵌套循环跳出全层推荐用 goto。


    2、continue 语句(跳过本次循环)

    ✅ 作用

    跳过本次剩余代码,直接进入下一次循环条件判断,不会终止整个循环。

    ✅ 核心规则
    • 仅跳过当前迭代,不影响后续循环执行
    • 适用于 for/while/do-while,不能用于switch
    ❌ 易错点
    • while/do-while 中使用 continue,必须将迭代变量写在 continue 之前,否则跳过迭代造成死循环
    • 核心区分:break 结束循环,continue 结束本次迭代

    3、return 语句(结束函数)

    ✅ 作用

    直接 终止当前整个函数,返回函数值,循环也会随之结束。

    ✅ 核心规则
    • 作用范围:直接结束函数,跳出所有层级循环
    • main函数中 return 0 代表程序正常结束
    ❌ 易错点

    return 是结束函数,不是专门用来控制循环的,不要滥用 return 替代 break。

    四、三大主流循环对比(高频考点)

    循环类型执行顺序执行次数适用场景使用率
    for 先判断后执行 0次/多次 循环次数确定 ⭐⭐⭐⭐⭐(首选)
    while 先判断后执行 0次/多次 循环次数不确定 ⭐⭐⭐⭐
    do-while 先执行后判断 最少1次 先执行后校验 ⭐⭐⭐

    五、高频易错总结(必看避坑)

  • 死循环根源:缺少迭代更新、循环条件恒真、continue跳过迭代变量更新
  • 分号坑:while/for 后禁止多余分号,do-while 末尾必须加分号
  • 跳转区别:break跳单层循环、continue跳本次迭代、return跳整个函数、goto无条件跳转
  • goto原则:能不用就不用,仅用于多层循环快速跳出
  • 执行次数差异:do-while 是唯一至少执行一次的循环
  • 六、极简代码示例(快速复习)

    1、for循环示例

    // 打印1-10
    for(int i=1;i<=10;i++){
    printf("%d ",i);
    }

    2、while循环示例

    int i=1;
    while(i<=10){
    printf("%d ",i);
    i++; // 必须迭代
    }

    3、do-while循环示例

    int i=1;
    do{
    printf("%d ",i);
    i++;
    }while(i<=10); // 末尾分号必写

    4、break与continue对比

    // continue:跳过偶数,只打印奇数
    for(int i=1;i<=5;i++){
    if(i%2==0) continue;
    printf("%d ",i);
    }

    // break:遇到3直接终止循环
    for(int i=1;i<=5;i++){
    if(i==3) break;
    printf("%d ",i);
    }

    七、学习总结

  • 循环语句核心差异在于执行顺序和适用场景,开发优先级:for > while > do-while,杜绝滥用goto;
  • 辅助语句核心区分:continue跳本次、break跳本层、return跳函数;
  • 写循环优先规避死循环、语法标点错误、跳转逻辑混乱三大问题。
  • 后续学习数组、函数递归、算法逻辑,全部依赖循环语句,必须熟练掌握!

    赞(0)
    未经允许不得转载:171主机测评 » 嵌入式学习6
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址