第3周:判断
C
3.1.1 判断:判断的条件
条件
运算符 |
意义 |
== |
相等 |
!= |
不相等 |
> |
大于 |
1 >= |
大于或等于 |
< |
小于 |
<= |
小于或等于 |
关系运算的结果
- 当两个值的关系复合关系运算符的预期时,关系运算的结果为整数1,否则为整数0
#include <stdio.h>
int main()
{
printf("%d\n", 5==3);
printf("%d\n", 5>=3);
printf("%d\n", 5<=3);
return 0;
}
0
1
0
优先级
- 所有关系运算符的优先级比算数运算的低,但是比赋值运算的高
- 判断是否相等的 == 和 != 的优先级比其他的低,而连续的关系运算是从左到右进行的
#include <stdio.h>
int main()
{
printf("%d\n", 7>=3+4);
return 0;
}
1
3.1.2 判断:做判断
如果
if (条件成立) {
……
}
// 条件成立 等价于 括号里的数为 1
// isPrime 等价于 isPrime == 1
// !finished 等价于 finished == 0
- !a 表示非a
- 如if(!a)a若为0则执行if后面的语句
- a若不为0那么非a则等于0 ,那么不执行后面的语句。
- !a 用于逻辑表达。
3.1.3 判断:找零计算器
注释
- 以两个斜杠“//”开头的语句
- 注释(comment)插入程序代码中,用来向读者提供解释信息。它们对于程序的功能没有任何影响,但是往往能使得程序更容易被人类读者理解
/* */注释
- 延续数行的注释,要用多行注释的格式来写。多行注释由一对字符序列“/”开始,而以“/”结束
- 也可以用于一行内的注释
3.1.4 判断:否则的话
else = 否则的话
3.1.5 判断:if语句再探
if语句
if (total>amount)
total += amount+10;
3.2.1 分支:嵌套的if-else
嵌套的判断
- 当if的条件满足或不满足的时候要执行的语句也可以是一条if或if-else语句,这就是嵌套的if语句
else的匹配
- else总是和最近的那个if匹配
- 如果加大括号就不一样
缩进
tips
- 在if或else后面总是用{}, 即使只是一条语句的时候
3.2.2 分支:级联的if-else if
级联的if-else if
if (exp1)
st1;
else if (exp2)
st2;
else
st3;
3.2.3 分支:if-else的常见错误
if语句常见的错误
- 忘了大括号
- if后面的分号
- 错误使用==和=,if只要求()里的值是零或非零
- 使人困惑的else
代码风格
- 在if和else之后必须加上大括号形成语句块;
- 大括号内的语句缩进一个tab的位置;
3.2.4 分支:多路分支
switch-case
switch (控制表达式) {
case 常量:
语句
……
case 常量:
语句
……
default:
语句
……
}
- 控制表达式只能是整数型的结果
- 常量可以是常数,也可以是常数计算的表达式
break
- switch语句可以看作是一种基于计算的跳转,计算控制表达式的值后,程序会跳转到相匹配的case(分支标号)处。分支标号只是说明switch内部位置的路标,在执行完分支中的最后一条语句后,如果后面没有break,就会顺序执行到下面的case里去,直到遇到一个break,或者switch结束为止。