1. 关系运算符和逻辑运算符
- 解决的问题
-
如何用合法的 C 表达式描述一个判断条件?
-
如何用合法的 C 表达式描述一个复杂的判断条件?
- 何为逻辑运算符的短路特性?
-
- 逻辑运算符的优先级和结合性
- 逻辑非 -> 算术运算符 -> 关系运算符 -> 逻辑与 -> 逻辑或
- 逻辑非——右结合
-
逻辑与,逻辑或——左结合
-
关系运算符:大于、小于等
- 逻辑非 -> 算术运算符 -> 关系运算符 -> 逻辑与 -> 逻辑或
-
逻辑运算符的短路特性
-
用&&或者||连接的两个子表达式互换位置,对整个逻辑表达式的值有影响吗?
-
若表达式的值可由先计算的左操作数的值单独推导出来,那么将不再计算右操作数的值
- (i != 0) && (j / i > 0) ——“短路”使得“除0”运算不会发生
-
( a >= 1 ) && ( b++ == 5 ),若两个表达式交换位置,可能造成变量b的值不一致
-
2. 条件语句
- 解决的问题
-
C 语言提供了哪几种控制语句支持分支控制?
-
条件语句有哪几种形式?
-
何为条件运算符?
-
唯一一个三元运算符,条件表达式 表达式1 ? 表达式2 : 表达式3
-
-
在分支中使用复合语句有什么好处?
-
添加语句时不易出错,能保证程序逻辑的正确性
-
编译错误:illegal else without matching if
-
-
使代码结构更清晰
-
-
2.1 选择结构
- 单分支选择结构:
- 面临的选择是:要么执行一个操作,要么跳过它
- if ( 表达式P )
- 表达式P不局限于关系表达式,也可为数值表达式,表达式的值非0时,为真
-
双分支选择结构
-
面临的选择是:在两个不同的操作中选择其中的一个来执行
-
if-else 语句
-
-
多分支选择结构
- 面临2种以上选择(需连续执行多个条件判断)时
- 级联式if语句:else-if
3. 多分支选择控制与开关语句
- 解决的问题
- 在C语言中如何实现多分支控制?
-
break和 default 在 switch语句中的作用是什么?
-
switch语句
-
-
执行与表达式中值一致的case后的语句序列,直到遇到break
-
default:输入数据与所有case都不匹配时执行
-
根据边界值测试程序是否正确
-
4. 程序测试
- 解决的问题
-
程序测试的目的是什么?
-
常用的程序测试方法有哪些?
-
- 定义:给定一组输入,通过运行被测程序,检查程序输出是否与预期结果一致
-
测试用例的选取方法
-
尽量覆盖所有分支(路径)
-
应考虑到合法的输入和不合法的 输入以及各种边界条件
-
- 测试只能证明程序有错,不能证明程序无错
-
测试的目的
-
通过运行测试用例,找出程序中尽可能多的Bug
-
成功的测试在于发现迄今为止尚未发现的Bug
-
-
测试人员的主要任务
-
站在使用者角度,通过不断使用(包括非常规使用),尽可能多地找Bug
-
测试的过程就像黑客的攻击过程
-
- 程序测试方法分类
- 白盒测试:根据程序内部逻辑结构进行边界测试
- 回归测试:在修改程序后,对之前正确的测试用例再进行测试
-
有包含关系的,通常先测试范围小的
5. 本章小结
![](https://i-blog.csdnimg.cn/blog_migrate/4687a9124fadde65e3691d6556601e96.png)