首页 > 代码库 > 三种基本控制流
三种基本控制流
最近重读K&R的《C程序设计语言》,读到了“控制流”章节,发现原来学的太不扎实,于是查资料并总结了一番与大家分享。
一:顺序结构
顺序执行,用的最多,没什么可说的。
二:选择结构
1.if-else
用于单个条件判断,注意事项:
- 若是多层嵌套且不加花括号,则else与最内层if配对,所以为了引起歧义,多层嵌套最好加花括号。千千万万不能用缩写的方式表示层次关系,不要与python等语言混了。
- 一般不用if(a == 0)的写法,而用if(!a),表示“如果a不等于1”,非常直观。
if-else简单变形:
- 嵌套,代码:
if (n > 0)
{
if (a > b)
{
z = a;
}
else
{
z = b;
}
}
(虽然第一个if的花括号不加也可以,但加上花括号更易阅读) - 多个条件同时满足,代码:
if (a>b && b>c)
当多层If嵌套且无else,可以用这种形式化简,比如上面的代码等价于:if (a>b)
{
if (b>c)
{
/* code */
}
}
是不是第一种写法更紧凑,更清晰? - 多个条件中任意一个满足即可,代码:
if (a>b || b>c)
- ? : 结构可以写出更紧凑的代码,但是可读性下降,不用也可以。
2.else if
不要写成if else,用于多路情况的判定。
多个平级的if且无else,可用此结构代替:
平级else代码:
平级else代码:
if (a > b)
{
/* code */
}
if (b > c)
{
/* code */
}
if (c > d)
{
/* code */
}
替换为else if结构代码:
if (a > b)
{
/* code */
}
else if (b > c)
{
/* code */
}
else if (c > d)
{
/* code */
}
else
{
;
}
是不是第二种可读性更强?
3.switch
注意事项:
- 每个case之后都加break,当不得已不加的时候应该注释说明。同样也是为了可读性,防止别人读你的代码的时候觉得你忘记加了。
- 加default分支是个好习惯,可以用来捕获异常。
- 这种方法要求switch和case必须都是常量,不允许变量。
switch和else if都可以多路判定,比较二者:
- switch代码更精简,同时很多情况下效率要比else if高,比如匹配状态常量的时候swich方法好很多,所以多路选择先用switch方法。
- 前者只能用于常量,后者常量和变量都可以。
三:循环结构
1.while循环
不多说。
2.for循环
理论上,可以用while的也可用for实现。但是循环次数已知的情况多用for循环,而循环次数未知的情况用while循环。
3.do while循环
用的少,但有时候用更方便。
来自为知笔记(Wiz)
三种基本控制流
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。