学科分类
目录
C语言

逻辑运算符与逻辑表达式

有时在程序中,需要对由几种情况组成的复合条件进行判断,例如,小明计划假期出游,但要考虑天气是否良好,以及能否买到火车票,如果两者都能满足,则可以出游,如果有一种情况不满足就不出游。C语言提供了逻辑运算符来完成这种综合几种条件的判断,下面将对逻辑运算符与逻辑表达式进行讲解。

1、逻辑运算符

逻辑运算符用于判断复合条件的真假,其结果仍为“真”或“假”。C语言中逻辑运算的含义及用法如表1所示。

表1 逻辑运算符

运算符 运算 范例 结果
! !a 如果a为假,则!a为真 如果a为真,则!a为假
&& a&&b 如果a和b都为真,则结果为真否则为假
|| a|| b 如果a和b有一个或以上为真,则结 果为真,二者都为假时,结果为假

逻辑运算符中的!运算符是单目运算符,它只操作一个变量,对其取反,而&&运算符和||运算符为双目运算符,操作两个变量。

2、逻辑表达式

由逻辑运算符连接起来的表达式称为逻辑表达式,例如下面代码中的逻辑表达式(假设a、b、c的值分别为10、20、0)。

!a   //结果,值为0 
a&&b  //a和b都为真,结果为真,即值为1 
b||c  //结果为真,即为1
!a&&b  //结果为假,即值为0
!a||b  //结果为真,即值为1

逻辑运算符的优先级为!>&&>||,因此当逻辑表达式中有多个逻辑运算符时,运算符的执行顺序不同。表达式“!a&&b”的执行顺序为:先计算!a,结果为0,然后计算0&&b,结果为0;表达式“!a||b”的执行顺序为:先计算!a,结果为0,然后计算0||b,因为b为真,所以结果为1。

需要注意的是,逻辑运算符中的“!”运算符优先级高于算术运算符,但“&&”运算符和“||”运算符的优先级低于关系运算符。

在使用逻辑运算符时需要注意,逻辑运算符有一种“短路”现象:在使用“&&”运算符时,如果“&&”运算符左边的值为假,则右边的表达式就不再进行运算,整个表达式的结果为假,例如下面的表达式(假设a、b、c、d依次为5、4、3、3):

a+b<c&&c==d         //结果为0

在上述表达式中,a+b的结果大于c,表达式a+b<c的结果为假,因此,右边表达式c==d不会进行运算,表达式a+b<c&&c==d的结果为假。

在使用“||”运算符时,如果“||”运算符左边的值为真,则右边的表达式就不再进行运算,整个表达式的结果为真,例如下面的表达式(假设a、b、c、d依次为1、2、4、5):

a+b<c||c==d         //结果为1

在上述表达式中,a+b的结果小于c,表达式a+b<c的结果为真,因此,右边表达式c==d不会进行运算,表达式a+b<c||c==d的结果为真。

逻辑运算符的这种计算特性可以节省计算开销,提高程序的执行效率。

点击此处
隐藏目录