6、
7、优先级123.逻辑非:!优先级2结合性,从左到右,双目结合性,从右向左,单目有如下逻辑表达式:a&&b:当a,b都为真时,结果为真,否则结果为假a
8、
9、b:当a,b都为假时,结果为假,否则结果为真!a:当a为真时,结果为假,当a为假时,结果为真。见表5.1在一个逻辑表达式中,若包含多个
10、逻辑运算符时,则运算顺序按运算符优先级的高低进行。如:下面表达式是逻辑还是关系表达式?所以(a>b)&&(x>y)可写成a>b&&x>y(a==b)
11、
12、(x==y)可写成a==b
13、
14、x==y(!a)
15、
16、(a>b)可写成!a
17、
18、a>b①③②④⑤!a&&b
19、
20、x>y&&c5.2.2逻辑表达式在逻辑表达式中参加运算的数据可以是常量、变量、表达式。见P89下及表5.2例:T5-0-1.cmain(){inta=-5,i,j,k,l,m;floatb=0.01;i=!a;j=a&&b;k=a
21、
22、b;l=(5>3&&2
23、
24、8<4-!0);m=‘a’<‘b’&&‘5’>‘9’;printf(“i=%d
25、,j=%d,k=%d,l=%d,m=%d”,i,j,k,l,m);}运行结果:i=0,j=1,k=1,l=1,m=0参加运算的数据非0值真0假逻辑运算的结果真值为1假值为0在逻辑表达式求解过程中,所有逻辑运算符并不一定都被执行。只有在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。1.逻辑与运算符:&&如有逻辑表达式:a&&b&&c执行过程是:当a为0时,b和c不用再判断了,逻辑与运算符将不再执行,结果为0,否则还要继续后边的运算。abc0(假)非0(真)0(假)非0(真)1(真)0(假)0(假)2.逻辑或运算符:
26、
27、如有逻辑表达式:a
28、
29、b
30、
31、c执行过程是:当a为
32、非0时,b和c不用再判断了,逻辑或运算符将不再执行,其结果为1,否则继续执行后面的运算。abc0非0(真)非0(真)非0(真)0(假)1(真)0例:T5-0-2.cmain(){inta,b=0,c=0,d=0;scanf(“%d”,&a);d=a&&(b=5)&&(c=3);printf(“a=%d,b=%d,c=%d,d=%d”,a,b,c,d);}1a=1,b=5,c=3,d=10a=0,b=0,c=0,d=0输入:输出:例T5-0-3.cmain(){inta,b=0,c=0,d=0;scanf(“%d”,&a);d=a
33、
34、(b=5)
35、
36、(c=3);printf(“a=%
37、d,b=%d,c=%d,d=%d,”,a,b,c,d);}1a=1,b=0,c=0,d=10a=0,b=5,c=0,d=5输入:输出:在C中,巧妙地使用逻辑表达式,可以表示一个复杂的问题如:关于闰年问题:符合下列条件之一,均为闰年。(1)能被4整除并且不能被100整除(2)能被4整除并且能被400整除其逻辑表达式为:(year%4==0&&year%100!=0)
38、
39、(year%400==0&&year%4==0)由于能被4