0. 分支还是顺序
if (A){
...
} else {
...
}
if (B){
...
}
- 不同的 if 之间是顺序关系,不是分支,上述的代码,if (A) 执行完成之后,接着执行 if (B);
- if 与 与其最近的 else,则是分支关系;
1. 一般而言if 做错误判断(如文件打开错误),while 自然做正确性判断
尤其在 if 嵌套在 while 循环之中时
while ((c = getc(stdin)) != EOF){
if (putc(c, stdout) == EOF){
...
}
}
if (ferror(stdin))
...
2. if 是什么
if 是断言(predicate),if 是过滤器(filter),if 是人生的分叉口。
3. while 与 if 连续使用
while (A){
B;
}
if (C){
D;
}
while (A)
进入一个循环,将全部 A 成立时的情况耗尽完毕;
4. if 与 continue 结合
if 与 continue 结合实现对某些循环的屏蔽;
5. while (cond)
只要 while(cond) 括号内的条件一直成立,且循环体内没有 break、return等语句的执行,整个程序会在 while,代码体内,不断地执行、不断地进入循环,执行相同的代码,直到 cond 不再成立。占据主要的时间。
出于对时间复杂度的考虑,此时要重点考虑 while 循环体内,对相关变量的更新、设置和修改,采取的是什么机制:
- 线性 ⇒ O(n)
- 二叉树 ⇒ O(log2n)