有时,只用一个简单的关系表达式无法完整地表达两个或多个条件的组合。例如,12岁以下的儿童和65岁以上的老人,可以免费进入公园。这就需要判定两个条件:①年龄是否小于12岁;②年龄是否大于65岁。这两个条件满足一个,就可以免费进入公园。这种组合条件是不能用一个关系表达式来表示的,要用两个表达式的组合来表示,这就需要用到逻辑运算符。
图4-3 优先级关系图
1.逻辑运算符及其优先次序
C语言提供了3种逻辑运算符,如表4-2所示。逻辑运算符和其他运算符的优先关系如图4-3所示。
表4-2 逻辑运算符表
2.逻辑表达式
逻辑表达式由逻辑运算符和运算对象组成,其中参与逻辑运算的对象可以是一个具体的值,也可以是C语言中任意合法的表达式,逻辑表达式的一般形式为:
逻辑表达式的运算结果为逻辑值,即“真”或“假”,用“1”或“0”表示。其运算规则为:
逻辑与(&&):当两边的表达式的值均为非0时,逻辑表达式的值才是1,其余情况均为0。
逻辑或(||):当两边表达式的值均为0时,逻辑表达式的值为0,其余情况均为1。
逻辑非(!):当表达式的值为非0时,逻辑表达式的值为0;反之当表达式的值为0时,逻辑表达式的值为1。
例如:
(1)数学表达式a<b<c的程序表达式为:
a< b && b <c
(2)判断整数n是否能被3或5整除的逻辑表达式为:
n%3==01 |n%5==0
(3)判断年龄是否在12岁和65岁之间?(www.daowen.com)
age > 12 && age <65
(4)判断year是否为闰年的逻辑表达式为:
( (year % 4 ==0 && year % 100 !=0) | | (year % 400 ==0) )(5)若a =2,b =3,c =0,计算下面表达式的值。
1)a<b&&b<c
关系表达式a <b的值为“真”,表示为1;关系表达式b <c的值为“假”,表示为0。那么,1 &&0,结果为0,所以,逻辑表达式的值为0。
2) a <b||b <c
关系表达式a <b的值为“真”,表示为1;关系表达式b <c的值为“假”,表示为0。那么,1||0,结果为1,所以,逻辑表达式的值为1。
3) !c&&a
c的值为0,即假, ! c的值就为“真”,表示为1;a的值为2不是0,则为“真”,表示为1,那么1 && 1,结果为1,所以,逻辑表达式的值为1。
在逻辑表达式求值过程中,并不是所有的逻辑运算符都会被执行,一旦能确定逻辑表达式的值,就不再逐步求值。详细说明如下:
(1)(表达式1)&&(表达式2)。如果表达式1为“假”,则表达式2不会进行运算,也称为表达式2“被短路”。
(2)(表达式1)||(表达式2)。如果表达式1为“真”,则表达式2不会进行运算,也称为表达式2“被短路”。
例如,设“inta=0,b=2,c=1;”,求下列表达式的值及各变量的值。
(1)a&&b++&&--c
结果:表达式的值为0,a =0,b =2,c=1。
(2)a | | b--| | c ++
结果:表达式的值为1,a=0,b=1,c=1。
(3)x=a<b || c++
结果:x=1,a=0,b=2,c=1。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。