控制语句

  • 控制语句
  • 一、分支语句
    • if语句
    • switch语句
  • 二、循环语句
    • while循环
    • for循环
    • do...while循环
  • 三、转向语句
    • break
    • continue
    • return
    • goto语句

控制语句

控制语句是用于控制程序的执行流程,以实现程序的各种结构方式的语句。(C语言支持三种结构:顺序结构、选择结构和循环结构)

C语言有九种控制语句,可分为以下三类:
1、条件判断语句(分支语句):if语句,switch语句。
2、循环语句:while语句,for语句,do…while语句。
3、转向语句:break;continue;return;goto语句。

一、分支语句

  • if语句

if语句的语法结构

    //单分支—单代码块if (表达式)语句;//单分支—双代码块if (表达式)语句1;else语句2;//多分支if (表达式1)语句1;else if (表达式2)语句2;……else if (表达式n)语句n;else语句;

else的匹配:没有大括号的嵌套分隔时,else与离它最近的if相匹配。

:如果表达式为真,语句执行;表达式为假,则不执行。
  0表示假,非0表示真

  • switch语句

switch语句常用于多分支的情况,switch语句允许嵌套使用。

switch语句的语法结构

 switch (整型表达式)  // !! 整型{语句项;}

其中的语句项是一些case语句和default语句

 // case语句case 整型常量表达式:  // !! 整型,常量语句;break;  //除非有意为之,否则每一条case语句写完下面都要加上一个break;

default子句

  default:语句;

当表达式的值与所有case标签的值都不匹配时,用一个default子句来做提示,让整个switch语句的表达更加完整。

default子句可放在任何一个case可以出现的位置,一般建议放在最后。

二、循环语句

  • while循环

while的语法结构

    while (表达式){循环语句;}
  • for循环

for循环的语法结构

  // 初始化  条件判断  循环变量调整for (表达式1; 表达式2; 表达式3){循环语句;}

for循环条件中的3个表达式均可省略,但没有特殊用处或没有把握时不建议省略。

补充,用for还是while?

  1. 循环体执行的代码相同的条件下,for循环的效率高于while循环

C源代码:

int main()
{while (1);for (;;);return 0;
}

对应的汇编代码:

 while (1);
00007FF68C2F176B  xor         eax,eax
00007FF68C2F176D  cmp         eax,1
00007FF68C2F1770  je          main+24h (07FF68C2F1774h)
00007FF68C2F1772  jmp         main+1Bh (07FF68C2F176Bh)  for (;;);
00007FF68C2F1774  jmp         main+24h (07FF68C2F1774h)

汇编代码解析:
  可以看到,“while (1);”语句,需要4条汇编指令:立即数、与操作、比较、跳转;
  而“for (;;);”语句,只需要一条汇编指令。

  1. C99标准下,for循环的循环变量可在初始化部分同时定义和初始化
    for (int i = 0;;);

这样写for循环结束后 i 占用的栈内存就会被释放,可节约内存,while则不行。

  1. while循环的调整部分在循环体内部,容易一个不小心改动了循环变量导致循环错误。

综上,在能使用for循环的情况下建议使用for循环代替while循环。

  • do…while循环

do…while循环的使用场景:循环至少循环一次。

do语句的语法结构

 do{循环语句;} while (表达式);

三、转向语句

  • break

break的作用:跳出直接所在的那层循环。

若为一层循环直接跳出循环, 若为嵌套循环,以2层为例:在内层循环遇到break是跳到外层循环,在外层循环则跳出循环体。

  • continue

continue的作用:跳过所在循环continue下面的代码,直接回到所在循环的循环条件部分。

:在循环体内才能使用break和continue。

  • return

return的作用:直接跳出所在的函数体。

  • goto语句

使用goto语句可实现代码执行顺序的跳转。
可用于一步跳出深度嵌套和实现一些简单的循环。

 for(...){for (...) { for (...) { if (disaster)goto error;  //跳出深度嵌套}}……//error是标记跳转位置的标号,这个标号名是人为命名的//要与上面goto后面的标号保持一致
error:      if (disaster)   // 处理错误情况

注意:goto语句只能在同一个函数内部跳转,不能跨函数跳转。

破开C语言暗夜的第三道光——控制语句相关推荐

  1. 破开C语言暗夜的第四道光(1)—— 函数基础知识

    函数基础知识 一.C语言中函数的分类 - 库函数 - 自定义函数 二.函数的声明与定义 - 函数的声明 - 函数的定义 三.函数的参数 - 实际参数(实参) - 形式参数(形参) 四.函数的调用 - ...

  2. 破开C语言暗夜的第二道光 —— 数据与数据类型(1)

    标识符与常量变量 一.标识符 二.常量变量 1.变量 1-1:变量的定义 1-2:变量的命名 1-3:变量的作用域和生命周期 1-4:变量的分类 2.常量 2-1:常量的定义 2-2:常量的分类 三. ...

  3. 国开1253c语言程序设计,人教版三年级数学下册单元测试题全套

    人教版三年级数学下册单元测试题全套 最新人教版三年级数学下册单元测试题全套1 第1单元过关检测卷 一.认真读题,专心填写.(每空1分,共18分) 1.地图通常是按照"( )北,( )南,( ...

  4. 电大c 语言程序形考作业,国开电大 C语言程序设计 形考三答案

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 国开电大 C语言程序设计 形考三答案 786971758 一.选择题(共30分,每小题2分) 题目1还未回答满分2.00标记题目题干 在下面的函数声明语句 ...

  5. R语言系统教程(三):多维数组和矩阵

    R语言系统教程(三):多维数组和矩阵 3.1 生成数组或矩阵 3.1.1 将向量定义为数组 3.1.2 用array()函数构造多维数组 3.1.3 用matrix()函数构造矩阵 3.2 数组下标 ...

  6. 航空航天大类C语言程设第三次练习赛

    航空航天大类C语言程设第三次练习赛 第四期更新, 鸽子博主终于更新第三次练习赛了 (A题)求区间交并集 多行数据,每行有两个数,用空格分开,表示每个区间的下和上界,保证是合法的非空集,而且得到的并集是 ...

  7. Swift Web 开发之 Vapor - 模版 Leaf(三)

    模版引擎,对现在的 Web 开发极为重要,几乎所有主流 Web 框架都会支持一种或多种模版引擎,模版引擎可以分离用户界面和业务逻辑,工作原理主要是一种翻译,后端对特定的标记.语法.变量等渲染后再输送给 ...

  8. c语言中,x-y,'105',ab,7f8那个是正确的,C语言程序设计_第三章 数据.ppt

    C语言程序设计_第三章 数据 * 运算符功能 与运算量关系 要求运算量个数 要求运算量类型 运算符优先级别 结合方向 结果的类型 学习运算符应注意 * 基本算术运算符: + - * / % 结合方向: ...

  9. c语言三级上机题库,2006年9月全国等级考试三级c语言上机题库(三十四)

    ★☆题目34(无忧id 73,102 素数题) 无忧id 102 题提供了求素数isPrime()函数 程序prog1.c的功能是:选出100以上1000之内所有个位数字与十位数字之和被10除所得余数 ...

最新文章

  1. VSTS Code Analysis 错误 CA1014 CLSCompliantAttribute 及Suppress Message (镇压Code Ananlysis)...
  2. celery java_Celery详解
  3. C++STL模板库适配器之stack容器
  4. Spring MVC使用webSocket保持长连接
  5. skt7850鸿蒙策略,lol 英雄联盟 SKT状态回暖轻取外卡,SUP难挡Faker
  6. 计算机组成原理与汇编语言程序设计课后答案,计算机组成原理与汇编语言程序设计课后习题及解答(详解)...
  7. 读书节第二日丨数据大咖来荐读,互动荐书赢好礼!
  8. C++ 结构体内存对齐
  9. 全网最全数据分析师面试干货-业务逻辑篇
  10. 虚拟机设置共享文件夹之后看不见文件(失败合集+成功分享)
  11. word插入脚注后最后一页多了一个分页符(下一页),导致最后多了一个空白页,删除不掉。
  12. 亲爱的朋友,祝您天天好心情!
  13. Python3 matplotlib 将图片转华为png格式图片数据
  14. 佛说,是我们自己苦了自己~
  15. 茂名天源石化宣传“世界急救日”活动 普及急救知识
  16. HP-UX 基本命令学习
  17. 剑指 offer 面试题精选图解 10-I.斐波那契数列
  18. TTL expired in transit
  19. 从零开始研发GPS接收机连载——8、跟踪调试之遇到瓶颈
  20. IIS6 + Resin3.1.x 的不爽之处

热门文章

  1. 64微型计算机中的32,32位微型计算机中32指的是
  2. word中自动插入目录,页码超出页边距
  3. Java项目:SpringBoot美容院后台管理系统
  4. mysql数据库导出数据
  5. 家庭财务管理系统设计与实现
  6. Linux下PCI设备驱动程序开发 --- PCI驱动程序实现(三)
  7. iOS CAShapeLayer、CADisplayLink 实现波浪动画效果
  8. 微信小程序引入外部字体
  9. 计算机双网口怎么共享网络,win7电脑怎么共享上网 两台电脑共享上网操作方法...
  10. Laravel 图床与颜值检测结晶