理论教育 逻辑运算符和表达式实战

逻辑运算符和表达式实战

时间:2023-11-21 理论教育 版权反馈
【摘要】:图4-3优先级关系图1.逻辑运算符及其优先次序C语言提供了3种逻辑运算符,如表4-2所示。在逻辑表达式求值过程中,并不是所有的逻辑运算符都会被执行,一旦能确定逻辑表达式的值,就不再逐步求值。

逻辑运算符和表达式实战

有时,只用一个简单的关系表达式无法完整地表达两个或多个条件的组合。例如,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。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈