上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
4.2.2 逻辑表达式
用逻辑运算符将表达式连接起来的式子叫逻辑表达式,其中的表达式可以是逻辑表达式、关系表达式、算术表达式、赋值表达式等。
逻辑表达式的结果只能是“真”或“假”。逻辑表达式成立,即为“真”;逻辑表达式不成立,即为“假”。需要注意,C语言规定在判断一个运算量是“真”或“假”时,以“0”代表假,以“非0”代表真。也就是说,只要该运算量的值不为0 就可以看做“真”。
例如,若a=10,则!a的值为“假”(用0表示);若a=10,b=15,则a&&b的值为“真”(用1表示),a||b的值为“真”,!a&&b的值为“假”。进行逻辑运算时,应注意:
① 逻辑运算符的操作数可以是任意类型,只要能表示为0或非0值即可。
例如:
'a'&&'\0' 结果为“假”
10||'a'+'b' 结果为“真”
!10结果为“假”
② 逻辑运算符&&和||运算时强调由左到右按序进行,但求解时不一定对逻辑运算符两边的表达式都求值,如果前面的运算已经可以确定整个表达式的计算结果,则后面的计算就不是必要的了,称为运算截断。
例如,对于&&运算:
表达式1 && 表达式2
当表达式1的值为“假”时,该逻辑表达式的结果肯定为“假”,表达式2的计算就被忽略了。例如,假设n1、n2、n3、n4、x、y的值分别为1、2、3、4、1、1,则求解表达式(x=n1>n2)&&(y=n3>n4)后,x的值变为0,而y的值不变,仍等于1。
同理,对于||运算:
表达式1 || 表达式2
当表达式1的值为“真”时,该逻辑表达式的结果肯定为“真”,因此表达式2的计算也不再需要了。
③ 在一个逻辑表达式中,如果有多个运算符,则要按照它们的优先级进行运算。
例如:
10>3&&10||0
首先处理“10>3”,结果为“真”,用1 表示;再处理“1&&10”,结果为“真”,用1表示;接着再处理“1||0”,结果为“真”。