《C++新经典》第4章 逻辑运算和判断选择
4.1 关系运算符、关系表达式与逻辑运算符、逻辑表达式
4.1.1 关系运算符和关系表达式
- 关系运算符
关系运算(比较运算),比较两个值。
优先级从低到高:
赋值运算符《 关系运算符《 算术运算符
!=,== 《 <,<=,>,>=
c > a+b
a>b == c
a = b>c
- 关系表达式
关系运算符将两个表达式连接起来。
b+c < a
4.1.2 逻辑运算符和逻辑表达式
- 基本概念
- 逻辑运算符
&&,逻辑与,and
||,逻辑或,or
!,逻辑非,not
- 逻辑运算符连接关系表达式,构成逻辑表达式。
a && b,都真才真。
a || b,都假才假。
!a,真假互变。
0真,非0假。
- 优先级
从低到高
赋值运算符《 &&和|| 《 关系运算符《 算术运算符 《 !
a>b && x==y
- 求值问题
短路求值特性,当&&或||左侧结果能决定最终真假时,右侧将不再执行。
(1)a && b && c
当&&左侧为假时,右侧不再执行。
int a = 1;
3>5 && a=8;
printf("a=%d", a);
(2)a || b || c
当||左侧为真时,右侧不再执行。
int a = 1;
3<5 && a=8;
printf("a=%d", a);
4.2 if语句
4.2.1 if语句的三种形式
if(判断表达式) {
一或多条语句;
}
if(判断表达式) {
一或多条语句;
} else {
一或多条语句;
}
if(判断表达式1) {
一或多条语句;
} else if(判断表达式2) {
一或多条语句;
} else {
一或多条语句;
}
4.2.2 if语句的嵌套
if(判断表达式) {
一或多条语句;
} else {
if(判断表达式) {
一或多条语句;
} else {
一或多条语句;
}
}
4.3 条件运算符和switch语句
4.3.1 条件运算符
表达式1?表达式2:表达式3
先判断表达式1的真假。
真,执行表达式2,并返回;
假,执行表达式3,并返回。
表达式2和表达式3的值类型要一致。
4.3.2 switch语句
用于多分支语句。
switch(表达式) {//表达式值类型可以是整型、字符型或枚举型
default://位置任意放置
一或多条语句;
break;
case 常量表达式1:
case 常量表达式2://多个case可合并
一或多条语句;
break;//忽略break后,会继续执行下一个case
case 常量表达式3:
一或多条语句;
break;
//......
}