1.关系运算
(1)关系运算符
所谓“关系运算”,实际上就是“比较运算”。将两个数值进行比较,判断它们是否符合给定的条件。C语言提供了6种用于比较的关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、!=(不等于)。
提示:
②关系运算的结合性也是“左结合性”;
③C语言中的等于关系用==表示,而不是=(赋值运算符)。赋值运算是将右侧的值赋给左部变量,赋值运算符没有比较的意义。
(2)关系表达式
关系表达式就是用关系运算符将变量、常量、表达式连接起来的式子。关系表达式的值是一个逻辑值,若关系表达式成立,则值为“真”,否则为“假”。由于C语言没有逻辑型数据,所以,关系运算的返回结果若为真,则用1表示;返回结果若为假,则用0表示。
思考分析下面表达式的值:
1)若a=3,b=2,c=1,则下列表达式的值分别为多少?
①(a>b)==c
②b+c<a
③f=a<b>c
2)表达式(a=3)>(b=5)的值是多少?
3)表达式'c'!='C'的值是多少?
2.逻辑运算
(1)逻辑运算符
逻辑运算表示两个数据或表达式之间的逻辑关系。C语言提供的逻辑运算符有3个,它们分别是:&&(逻辑与)、||(逻辑或)、!(逻辑非)。
逻辑运算的结果也只有真和假,即1和0。对于&&,若其左、右两个操作数均为非零(真),则返回值才为非零(真),否则返回值(假)。对于||,只要它左、右两边的操作数有一个为非零(真),则返回值就为非零(真),否则返回零。对于!,它把非零操作数转换为零,而把零操作数转换为非零(系统实现时往往为1)。逻辑运算的运用情况见表2-8。
表2-8 逻辑运算的真值表(www.daowen.com)
提示:
①!是单目运算符(只有一个运算量),一般形式为:!表达式。
②逻辑运算符!的结合性为“从右向左”,&&和||的结合性仍是“从左往右”。
(2)逻辑表达式
逻辑表达式的值应该是一个真值或假值的逻辑量,C语言编译系统在判断一个量是否为“真”时,主要是看该量是否为非零值,若为非零值,则认为其为“真”,用1表示;若该量为零值,则认为其为“假”,用0表示。
提示:
①&&和||的优先级低于关系运算符,!高于算术运算符。
②逻辑表达式中的逻辑量若不是0,则认为该量为真。
思考:若a=5,b=3,试分析下面表达式的逻辑值是多少?
5>3 && 2||7<4-!0
分析:根据优先级,该表达式的执行先后顺序大致如下:
第1步 5>3 && 2 ||7<4-!0
第2步: 1 && 2 ||7<4-!0
第3步: 1 ||7<4-!0
第4步: 1
a||b,如果a表达式值为真,结果就是真。就不需要判断b表达式的值。因此上面表达式中的7<4-!0,没有参与运算。
上面表达式最后的结果是:1
短路特性:在C语言中,&&和||是短路运算符号,在进行逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。
即在一个或多个由&&相连的表达式中,只要有一个操作数为零,就不做后面的&&运算,整个表达式的结果为零。而在由一个或多个||连接而成的表达式中,只要碰到第1个不为零的操作数,就不必再进行后续运算,整个表达式的值就不为零。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。