昨天我们了解了常用的输入输出函数,今天我们来了解C语言中的流程控制。
程序默认都是顺序结构,从上到下一行一行执行。但现实里很多场景需要做判断,这时就要用到分支结构。
先说说关系运算符和逻辑运算符,这是所有判断的基础。> < == !=这类关系运算,结果只有1(真)和0(假)。
逻辑运算符三个:&&(并且)、||(或者)、!(取反)。这里有个很关键的特性——截断特性。&&左边条件为假,右边代码直接不运行;||左边条件为真,右边不再运算,写代码的时候很容易踩坑。还有三目运算符,条件 ? 表达式1 : 表达式2,简单的二选一判断可以简化代码。
重头戏是if分支语句。
最基础的if-else很好理解,二选一。进阶有两种写法:阶梯分支、嵌套分支。
阶梯分支就是if … else if … else,适合多种条件依次判断,比如划分成绩等级。
嵌套分支,就是if里面再套一层if,适合条件分层判断。举个例子:先判断是不是三位数,在三位数的前提下,再判断是否是水仙花数。
这里踩过不少坑:else总是和离它最近、没有匹配else的if配对;如果不加大括号,if只能控制紧跟的一行代码,大括号千万不能偷懒漏写。
然后学习了switch语句。
switch适合某个变量和固定常量匹配的场景。
几个硬性规则我们应该记住:
- switch括号内只能是整型,不能写小数浮点;
- case后面必须是常量,不能放变量;
- break非常关键!不加break会发生穿透,匹配成功后会持续执行后续所有case;
- default是可选分支,所有case都不匹配时执行。
switch同样支持嵌套,case里面可以继续写switch,不过日常写代码用得不多。
简单总结一下怎么选择分支:
少量条件判断用if-else;多区间连续判断优先阶梯if;变量匹配固定常量,首选switch。
理论看着不难,但上手敲代码一堆小bug。比如闰年判断、水仙花数程序,经常因为大括号错位、逻辑运算符写错导致结果出错。纸上看懂和键盘敲出来完全是两回事,还是得多写练习巩固。