1.逻辑运算符
&&(逻辑与) ||(逻辑或) !(逻辑非)
其中:&&和||是双目(元)运算符!是一目(元)运算符
Ø逻辑运算的真值表

逻辑运算符的优先次序
! → && → || (!为三者中最高)
与其他运算符的优先次序

2.逻辑表达式
用逻辑运算符将关系表达式或其他逻辑量连接起来的式子。
逻辑表达式的值应该是逻辑量“真”或“假”。编译系统在表示逻辑运算结果时,以数值1代表“真”,以0代表“假”;但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。
注意:将一个非零的数值认作为“真”。
(1) 若a=4,则!a的值为0
(2) 若a=4,b=5,则a && b的值为1
(3) a和b值分别为4和5,则a||b的值为1
(4) a和b值分别为4和5,则!a||b的值为1
(5) 4 && 0 || 2的值为1
注意:在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。
例如:
① a&&b&&c 只有a为真(非0)时,才需要判别b的值,只有a和b都为真的情况下才需要判别c的值。只要a为假,就不必判别b和c(此时整个表达式已确定为假)。如果a为真,b为假,则不判别c,整个表达式运算结果为假。
② a||b||c 只要a为真(非0),就不必判断b和c;只有a为假,才判别b;a和b都为假才判别c。
例题1:逻辑运算符的应用。
#include <stdio.h>
int main( )
{
int x=4,y=5,z,m;
z=(x++==5) && (++y);
printf("z=%d,x=%d,y=%d\n",z,x,y);
m=(x++) || (++y);
printf("m=%d,x=%d,y=%d\n",m,x,y);
return 0;
}

例题2:写出以下各题的逻辑表达式。
(1)判断年龄(age)在13至17岁之内
age>=13 && age<=17
(2)判断(age)年龄小于12或大于65
age<12 || age>65
(3)判别某一年是否闰年
闰年的条件是符合下面二者之一:
①能被4整除,但不能被100整除,如2008
②能被400整除,如2000
(year % 4 == 0 && year 100 !=0) || year % 400 == 0

