第4章总结
4.2关系运算符,逻辑运算符,条件运算符
- 关系运算符都是双目运算符,其结合方向是左结合
- 关系运算符的优先级低于算数运算符,但是高于赋值运算符
- 关系运算符中,>,<,<=,>=的优先级相同,==,!=的优先级相同,前者的优先级高于后者,即>=的优先级高于==。
关系表达式
用关系运算符将两个表达式连接起来的式子称为关系表达式。关系表达式的一般形式为:表达式1关系运算符表达式2
功能:比较两个表达式的大小,返回一个逻辑值。
关系表达式中允许出现嵌套的情况,例如:a>(b>c),a!=(c==d)等
注意区分运算符=和==。=是赋值运算符,==是关系运算符。
对实数进行相等判断可能得不到正确的结果。
关系表达式中可以出现赋值运算符,如a>(b=0),但不能写成a>b=0的形式。因为关系运算符的优先级高于赋值运算符。
关系表达式主要用于分支结构中的条件判断。关系表达式的结果是一个逻辑值真或假,由于c语言中没有逻辑类型的数据,因此用1表示真,0表示假。
逻辑表达式
用逻辑运算符将两个表达式连接起来的式子称为逻辑表达式。逻辑表达式为:表达式1逻辑运算符表达式2逻辑运算符表达式1。(1)参与逻辑运算的数据可以是1和0,也可以是非零值和0,还可以是任何类型的数据,但最终都是以非0和0来判断他们是“真”或“假”。
(2)在逻辑表达式中也可以使用赋值运算符,如“a&&(b=0)”,但是不能写成“a&&b=0”的形式。因为逻辑运算符的优先级高于赋值运算符,表达式“a&&b=0”相当于“(a&&b)=0”,赋值运算符左边不是变量,会出现编译错误。(3)C语言规定,只对决定整个表达式值所需的最少数目的子表达式进行运算。即在由若干个子表达式组成的逻辑表达式中,从左向右计算,当计算出一个子表达式的值就确定了整个逻辑表达式的值时,此后就不再计算右边剩下的子表达式的值,这种情况称为“短路”。
1对于逻辑与(&&)运算,若“&&.”左边的表达式的值为假,则可以得出整个表达式的值为假,那么“&&”右边的表达式将不再进行计算;只有当“&&”左边的表达式值为真时才计算右边表达式的值。
2对于逻辑或(|1)运算,若“‖”左边的表达式的值为真,则可以得出整个表达式的值为真,那么“|1”右边的表达式将不再进行计算;只有当“1|”左边的表达式值为假时才计算右边的表达式
使用switch语句实现分支结构
在c语言中还提供了一种switch语句也可以实现多分支的选择。switch语句的一般形式如下:
switch(表达式)
{case常量表达式1:语句1;break;
case常量表达式2:语句2;break;
…
case常量表达式n:语句n;break;
default:语句n+1;break;
}
关于switch语句的几点说明:
(1)switch后的表达式可以是任何表达式,共值只能为整型,字符型、枚举型之一
()2)每个 case后面的常量表达式的值互不相同,否则就会出现互相矛盾的现象。
(3)各个case和default的出现次序不影响执行结果。
(4)可以让多个case共用一组执行语句
(5)switch语句允许嵌套使用
单分支if语句其一般形式如下:
if(表达式)
语句;
双分支if语句其形式一般如下:
if(表达式)
语句1;
else
语句2;