C语言学习三:控制流
二路分支 :if 语句
- 逻辑: 程序中某一段代码需要满足一定的条件才会被执行
- 语法:
- if 语句: 表达一种,如果条件满足则执行某个代码块
- if-else 语句: 表达一种,如果条件将满足则执行某个代码块否则执行另外一个代码块
1 | //if 语句: |
注意:
if 语句可以单独使用,但是 else 不可以单独使用,必须在 if 后面配套使用,不管是 if 还是 else ,都建议给他们配一对大括号 { } ,否则需要注意,只能识别 if / esle 后面的第一个逻辑行的语句
1 | if (a > 1) |
多路分支:switch-case
- 逻辑: 根据不同的条件来执行不同的代码块
- 语法:
1 | switch (表达式<判断的条件>) |
例:
1 | int num = 0; |
注意:
- switch(num )语句中的 num , 它必须是一个整型的表达式,也就是所switch 只能判断整型的数据
- case 语句中的必须是整型常量,包括普通的字符。不包括被 const 修改的整型数据
- break 用来中断/跳出当前的循环。如果没有则会从条件满足的语句开始一条一条的往下执行,直到整个switch - case 结束或者遇到其它代码块中的break
- default 并不是必须存在,它一般放在最后面,用来提示用户表示都不满足以上条件。由于在最后面可以不添加 break
const
用来修饰一个变量使之不可被修改
-
作用:
- 修饰变量: 使得变量不能被修改
- 修饰指针:使得指针的指向不能改变或者指针所指向的内容不得改变
1
2
3
4
5int const a = 100 ; // 定义了一个不可被修改的变量a
const int b = 200;
a = 300 ; // 错误 assignment of read‐only variable ‘a’
b = 250 ; // 错误 assignment of read‐only variable ‘a’
while 和 do…while 循环
while
逻辑: 使得程序中某一端代码块重复循环执行。
语法:
1 | while( 表达式 ) |

例:
1 | while(num) // 非零则真 (布尔值) |
do … while
语法:
1 | do |

例:
1 | do |
注意
- wehile 循环先进行判断而且条件为真,然后再执行代码块(有可能一次都不执行)
- do … while 则是先执行一次代码块,然后再判断条件是否成立(最少会执行一次代码块)
- while(num); --> 空循环这个分号要慎重
- do… While (num) ; 这个分号不能丢
for 循环
逻辑: 与 while 类似,都是让程序中某一段代码块重复运行,但是 for 相对与 while 来说更加紧凑。把所有的循环控制都集中到一行代码中
语法:
1 | for(初始化语句 ; 判断语句 ; 表达式 (一般用于自加/自减)) |
例:
1 | for (size_t i = 0; i < num ; ++i) |
1 | for (;;) // 相当与 while(1)死循环 |
注意:
- 初始化语句只会被执行一次
- 第三个表达式
++i再第一次循环的时候并没有被执行 - 第三个表达式中前缀/后缀并不影响
i再循环中取值的先后 - for 循环语句中,三个表达式都可以省略,但是分号必须留下
- for 循环语句中,三个表达式中间用分号来隔开 ;
- 在 for 循环中直接定义并初始化只在 C99的编译规则下可以这么干,所以可以添加
-std=c 99或者-std=gnu 99
break 与 continue
- break: 跳出循环结构 / 跳出当前层的循环
- continue : 结束当前这一次循环,重新进入下一次的循环
1 | for (int i = 0; i < num; ++i) |
goto 语句
逻辑: 无条件跳转
语法:
1 | int main(int argc, char const *argv[]) |
例:
1 | int main(int argc, char const *argv[]) |
注意:
- 标签后面有个冒号
: - goto 语句是一个无条件跳转的语句,不利于程序的可读性,一般不建议使用
- goto 语句一般出现在驱动比较多,用来处理严重的错误,并退出
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZのBlog!
评论





