• C语言——流程控制


    C语言目录:

    1. 概述

    2. 数据类型

    3. 量

    4. 运算符

    5. 流程控制

    6. 函数

    7. C程序编译过程

    8. 文件

    9. 内存管理


    默认情况下,程序运行后,系统会从上到下顺序执行程序中的每一行代码。

    5.1 顺序结构

    5.2 选择结构

    5.2.1 if

    if(表达式){
        语句1;
    }else if(表达式2){
        语句2;
    }else{
        表达式3;
    }
    后续语句;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    约定==!= 比较变量和值是否相等时,把常量卸载前面

    #include 
    
    int main(){
        int a = 8;
    //    if(a == 10){// 错误写法, 但不会报错
        if (10 == a){
          printf("a的值是10\n");
        }else{
         printf("a的值不是10\n");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    5.2.2 switch

    switch(表达式){
        case 常量表达式1:
            语句1;
            break;
        case 常量表达式2:
            语句2; 
            break;
        case 常量表达式n:
            语句n;
            break;
        default:
            语句n+1;
            break;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    注意

    • switch 的表达式及 case 的值 的类型必须是 int ,或者可以被提升为整型的值(charshort)

    • case 的值不能相同

    • 每个 case 要以 break 结尾,否则会出现穿透问题

    • default 不一定要放在 case 最后,只有等到所有 case 不匹配才会执行。

    5.3 循环结构

    循环条件 成立时,会反复执行 循环体 ,直到条件不成立位置

    5.3.1 while

    while(循环控制条件) {
        循环体中的语句;
        能够让循环结束的语句;
        ....
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 循环控制条件:循环退出的主要依据,来控制循环到底什么时候退出

    • 循环体:循环的过程中重复执行的代码段

    • 循环终止语句(递增、递减、真、假等):能够让循环条件为假的依据,否则退出循环

    注意

    如果 while 省略了大括号,则后面不能定义变量

    #include 
    
    int main(){
        while (1)  // 死循环
             int num = 10; // 报错
             // 没有能够让循环结束的语句
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    5.3.2 do while

    do {
        循环体中的语句;
        能够让循环结束的语句;
        ....
    } while(循环控制条件);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    a. 应用场景:口令校验

    #include
    
    int main()
    {
        int num = -1;
        do{
            printf("请输入密码,验证您的身份\n");
            scanf("%d", &num);
        }while(123456 != num);
        printf("主人,您终于回来了\n");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    do...whilewhile 的区别

    • do...while 至少执行一次
    • while 可能一次都不执行

    5.3.3 for

    for(初始化表达式;循环条件表达式;循环后的操作表达式) {
        循环体中的语句;
    }
    
    • 1
    • 2
    • 3

    对比 while 来说, for 更节约内存空间

    5.3.4 循环优化

    在多重循环中,应当将最长的循环放在最内存,最短的循环放在最外层,减少CPU跨循环层切换的次数

    for (row=0; row<100; row++) {
      // 低效率:长循环在最外层
      for ( col=0; col<5; col++ ) {
        sum = sum + a[row][col];
      }
    }
    
    for (col=0; col<5; col++ ) {
      // 高效率:长循环在最内层
      for (row=0; row<100; row++) {
        sum = sum + a[row][col];
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    5.4 四大跳转

    5.4.1 break

    立刻跳出当前语句或循环

    一个 break 只向外跳一层

    同一层, break 后面的语句不会执行

    5.4.2 continue

    结束 本轮 ,进入 下一轮 循环

    5.4.3 goto

    仅在本函数内实现跳转,不能实现跨函数跳转

    #include 
    
    int main(){
        int num = 0;
    // loop:是定义的标记
    loop:if(num < 10){
            printf("num = %d\n", num);
            num++;
            // goto loop代表跳转到标记的位置
            goto loop;
        }
    }
    
    #include 
    
    int main(){
        while (1) {
            while(true){
                goto out;
            }
        }
        out:printf("跳过了所有循环");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    5.4.4 return

    结束当前函数,将结果返回给调用者

  • 相关阅读:
    权限管理框架Shiro renren-security权限管理结构
    网站升级HTTPS教程
    【前端 - CSS】第 11 课 - 选择器
    即用型UI组件Kendo UI,助力惠普缩短40%的应用开发时长
    计算机基础(五)——Linux的bash.shell,help,man命令
    阿里云视频点播介绍
    excel怎么设置任意选一个单元格纵横竖横都有颜色
    WebSocket集群解决方案,不用MQ
    聚观早报 | 推特临时培训员工应对世界杯;世界杯足球内置传感器
    9月13日作业
  • 原文地址:https://blog.csdn.net/qq_40479037/article/details/126172520