1. 控制流
程序语言中的控制流语句用于控制各计算操作执行的次序。
根据对语句执行顺序的影响,C 语言的其余语句大多属 于以下 3 大类。
选择语句 (selection statement)。if 语句和 switch 语句 允许程序在一组可选项中选择一条特定的执行路径。
循环语句 (iteration statement)。while 语句、do 语句和 for 语句支持重复(循环)操作。
跳转语句 (jump statement)。break 语句、continue 语句 和 goto 语句导致无条件地跳转到程序中的某个位置。(return 语句也属于此类。)
2. 选择语句
2.1 if
- if 语句:表达一种 如果 - 则 的条件执行关系
- if-else 语句:表达一种 如果 - 否则 的互斥分支关系
if 语句
1 | if(a%2 == 0) |
if-else 语句
1 | if(a%2 == 0) |
- if 语句可以单独使用,else 语句不可以,else 语句必须跟 if 语句配套使用
- 不管是 if 语句还是 else 语句,代码块都必须使用大括号 {} 括起来,否则只有首句有效
2.2 switch
- switch 语句是一种多路判定语句,它测试表达式是否与一些常量整数值中的某一个值匹 配,并执行相应的分支动作
1 | switch (n) |
- switch(n) 语句中的 n 必须是一个整型表达式,即 switch 判断的数据必须是整型
- case 语句只能带整型常量,包括普通整型或字符
- break 语句的作用是跳出整个 swtich 结构,没有 break 程序会略过 case 往下执行
- default 语句不是必须的,一般放在最后面(因此不需要 break)
3. 循环语句
- 循环 (loop )是重复执行其他语句(循环体)的一种语句。在 C 语 言中,每个循环都有一个控制表达式,每次执行循环体(循环重复 一次)时都要对控制 表达式求值。如果表达式为真(即值不为零),那么继续执行循环。
3.1 while
- while 循环:先判断,再循环
1 |
|
3.2 do while
- do-while 循环:先循环,再判断
1 |
|
3.3 for
- 上述例子中,步幅和判断条件,步进长度都被放到了不同的地方,代码结构较为松散。为了让程序更加紧凑,可以使用 for 循环来代替
1 | for (表达式1; 表达式2; 表达式3) |
- “表达式 1” 仅在第一次循环时执行,以后都不会再执行,可以认为这是一个初始化语句。
- “表达式 2” 一般是一个关系表达式,决定了是否还要继续下次循环,称为 “循环条件”
- “表达式 3” 很多情况下是一个带有自增或自减操作的表达式,以使循环条件逐渐变得 “不成立”
1 |
|
- for 循环中的 “表达式 1(初始化条件)”、“表达式 2(循环条件)”和 “表达式 3(自增或自减)”都是可选项,都可以省略(但分号 “;” 必须保留)
1 | int i = 1, sum = 0; |
4. 跳转语句
- 使用 while 或 for 循环时,如果想提前结束循环(在不满足结束条件的情况下结束循环),可以使用 break 或 continue 关键字
4.1 break
- 当 break 关键字用于 while、for 循环时,会终止循环而执行整个循环语句后面的代码。break 关键字通常和 if 语句一起使用,即满足条件时便跳出循环
1 |
|
- 在多层循环中,一个 break 语句只向外跳一层
4.2 continue
- continue 语句的作用是跳过循环体中剩余的语句而强制进入下一次循环。continue 语句只用在 while、for 循环中,常与 if 条件语句一起使用,判断条件是否成立
1 |
|
break 与 continue 的对比:
break 用来结束所有循环,循环语句不再有执行的机会;
continue 用来结束本次循环,直接跳到下一次循环,如果循环条件成立,还会继续循环。
4.3 goto
- goto 语句直接跳转到本代码块中的标签处
- 标签指的是以冒号结尾的标识符
1 |
|
- goto 语句常被用在程序的错误处理中
- goto 语句的无条件跳转不利于程序的可读性,一般不建议使用
5. 循环嵌套
- 在 C 语言中,if-else、while、do-while、for 都可以相互嵌套。所谓嵌套,就是一条语句里面还有另一条语句,例如 for 里面还有 for,while 里面还有 while,或者 for 里面有 while,while 里面有 if-else,这都是允许的
1 |
|
原文地址 zhuanlan.zhihu.com