2、//a==(bc//a=(b>c)例inta=3,b=2,c=1,d,f;a>b(a>b)==cb+cbf=a>b>c<>//表达式值1//表达式值1//表达式值0//d=1//f=05.1关系运算符和表达式关系表达式的值,是‘真’或‘假’,用逻辑值‘0’或‘1’表示关系运算注意:<>例若a=0;b=0.5;x=0.3;则a<=x<=b的值为0例5>2>7>8在C中是允许的,值为0例inti=1,j=7,a;a=i+(j%4!=0);则a=2例‘a’>0结果为‘A’>100结果为10关系运算注意:例注意区分“=”与“==”inta=0,b=1;if(a=b)pr
3、intf(“aequaltob”);elseprintf(“anotequaltob”);例应避免对实数作相等或不等的判断如1.0/3.0*3.0==1.0结果为可改写为:fabs(1.0/3.0*3.0-1.0)<1e-60ab!a!ba&&ba
4、
5、b真假真假假假真真逻辑运算符和表达式逻辑运算符种类:!&&
6、
7、逻辑运算真值表C语言中,运算量:0表示“假”,非0表示“真”,运算结果:0表示“假”,1表示“真”,<>真假假假假假真真假假真真真假真真!(2)&&(11)
8、
9、(12)高低例a<=x&&x<=ba>b&&x>ya==b
10、
11、x==y!a
12、
13、a>b优先级:结合方向:!:从右向左&&:
14、从左向右
15、
16、:从左向右<>//(a<=x)&&(x<=b)//(a>b)&&(x>y)//(a==b)
17、
18、(x==y)//(!a)
19、
20、(a>b)!(非)算术运算符关系运算符&&和
21、
22、赋值运算符高低!(2)&&(11)
23、
24、(12)高低优先级:结合方向:!:从右向左&&:从左向右
25、
26、:从左向右例a=4;b=5;!aa&&ba
27、
28、b!a
29、
30、b4&&0
31、
32、25>3&&2
33、
34、8<4-!0‘c’&&‘d’<>值为1值为0值为1值为1值为1值为1//(5>3)&&2
35、
36、(8<(4-(!0)))值为1!(非)算术运算符关系运算符&&和
37、
38、赋值运算符高低!(2)&&(11)
39、
40、(12)高低优先级:结合方向
41、:!:从右向左&&:从左向右
42、
43、:从左向右短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符<>例a&&b&&c//只在a为真时,才判别b的值;只在a、b都为真时,才判别c的值例a
44、
45、b
46、
47、c//只在a为假时,才判别b的值;只在a、b都为假时,才判别c的值例a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)//结果m=0,n=1条件运算符与表达式一般形式:expr1?expr2:expr3执行过程功能:相当于条件语句,但不能取代一般if语句例if(a>b)printf(“%d”,a);
48、elseprintf(“%d”,b);printf(“%d”,a>b?a:b);例求a+
49、b
50、printf(“a+
51、b
52、=%d”,b>0?a+b:a-b);expr1取expr2值取expr3值非0=0例(a==b)?’Y’:’N’(x%2==1)?1:0(x>=0)?x:-x(c>=‘a’&&c<=‘z’)?c-’a’+’A’:c条件运算符可嵌套如x>0?1:(x<0?-1:0)优先级:13结合方向:自右向左如a>b?a:c>d?c:da>b?a:(c>d?c:d)expr1、expr2、expr3类型可不同,表达式值取较高的类型<>例x?‘a’:‘b’//x=0,表达式值为‘b
53、’;x‡0,表达式值为‘a’x>y?1:1.5//x>y,值为1.0;x