C语言之逻辑运算.ppt
《C语言之逻辑运算.ppt》由会员分享,可在线阅读,更多相关《C语言之逻辑运算.ppt(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 逻辑运算和判断选取控制逻辑运算和判断选取控制41 关系运算符和关系表达式关系运算符和关系表达式关关系系运运算算是逻辑运算中比较简单的一种。所谓“关关系系运运算算”实际上是“比比较较运运算算”。将两个值进行比较,判断比较的结果是否符合给定的条件。例如,a a3 3是一个关系表达式,大于号()是一个关系运算符,如果a的值为5,则满足给定的“a3”条件,因此关系表达式的值为“真”(即“条件满足”);如果a的值为2,不满足“a3”条件,则称关系表达式的值为“假”。4.1.1 关系运算符及其优先次序关系运算符及其优先次序 C语言提供6种关系运算符:(1)(小于)(2)(大于)(4)=(大于
2、或等于)(5)=(等于)(6)!=(不等于)关于优先次序:1前4种关系运算符(,)的优先级别相同,后两种也相同。前4种高于后2种。例如,“”优先于“=”。而“”与“”优先级相同。2关系运算符的优先级低于算术运算符。3.关系运算符的优先级高于赋值运算符。高 低 算术运算符 关系运算符 赋值运算符例如:ca+b 等效于 c(a+b)ab!=c 等效于(ab)!=c a=bc 等效于 a=(bb,abbc,(a3)(b=5),ab,(ab)(bc)关系表达式的值是一个逻辑值,即“真”或“假”。例如,关系表达式“53”的值为“假”“5=0”的值为“真”。C语言没有逻辑型数据(Pascal语 言 以 T
3、rue表 示“真”,以 Fa1se表 示“假”。PASCAL和FORTRAN等语言都有逻辑型变量和逻辑型常量),以1代表“真”,以“0”代表“假”。例如,若a=3,b=2,c=1,则:ab的值为”真”,表达式的值为1。(ab)=c的值为“真”(因为ab的值为1,等于c的值),表达式的值为1。bca的值为“假”,表达式的值为0。如果有以下赋值表达式:dab d的值为1。fabc f的值为0(因为“”运算符是自左至右的结合方向,先执行“ab”,得值为1,再执行关系运算:“1c”得值0,赋给f 42逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表达式。下
4、面介绍C语言中的逻辑运算符和逻辑运算。4.2.1逻辑运算符及其优先次序逻辑运算符及其优先次序 C语言提供三种逻辑运算符:1&逻辑与(相当于其它语言中的AND)2|逻辑或(相当于其它语言中的OR)3!逻辑非(相当于其它语言中的NOT)&和|”是“双目(元)运算符”,它要求有两个运算量(操作数),如(ab)&(xy),(ab)|(xy)。“!”是“一目(元)运算符”,只要求有一个运算量,如!(ab)。逻辑运算举例如下:a&b 若a,b为真,则a&b为真。a|b 若a,b之一为真,则a|b为真。!a 若a为真,则!a为假。下表为逻辑运算的“真值表”。用它表示当a和b的值为不同组合时,各种逻辑运算所得
5、到的值。a b !a !b a&b a|b T T F F T T T F F T F F 在一个逻辑表达式中如果包含多个逻辑运算符,如 !a&b|xy&c 优先次序:优先次序:高高 低低 !算术运算符算术运算符关系运算符关系运算符&|&|赋值运算符赋值运算符!a&b|xy&c ((!a)&b)|(xy)&c)(ab)&(xy)可写成:ab&xy(a=b)|(x=y)可写成:a=b|xy (!a)|(ab)可写成:!a|ab4.2.2逻辑表达式逻辑表达式 如前所述,逻辑表达式的值应该是一个逻辑量“真”或“假”。C语言编译系统在给出逻辑运算结果时,以数值1代表“真”,以0代表“假”,但在判断一个
6、量是否为“真”时,以以0 0代代表表“假假”,以以非非0 0代代表表“真真”。即将一个非零的数值认作为“真”。例如:若a4,则!a的值为0。因为a的值为非0,被认作“真”,对它进行“非”运算,得“假”,“假”以0代表。若a=4,b=5,则a&b的值为1。因为a和b均为非0,被认为是“真”,因此a&b的值也为“真”,值为1。a、b值同前,a|b的值为1。a、b值同前,!a|b的值为1。4&0|2的值为1。通过这几个例子可以看出,由系统给出的逻辑运算结果不是0就是1,不可能是其它数值。而在逻辑表达式中作为参加逻辑运算的运算对象(操作数)可以是0(“假”)或任何非0的数值(按“真”对待)。如果在一个
7、表达式中不同位置上出现数值,应区分哪些是作为数值运算或关系运算的对象,哪些作为逻辑运算的对象,例如 53&2|84-!0表达式自左至右扫描求解。首先处理“53”(因为关系运算符优先于&)。在关系运算符两侧的5和3作为数值参加关系运算,”53”的值为:1。再进行”1&2”的运算,此时1和2均是逻辑运算对象,均作“真”处理,因此结果为1。再往下进行“1|84-!0”的运算。根据优先次序,先进行“!0”运算得1,因此,要运算的表达式变成:“1|84-1”,即“1|8d不被执行,因此n的值不是0而仍保持原值1。这点请读者注意。熟练掌握C语言的关系运算符和逻辑运算符后,可以巧妙地用一个逻辑表达式来表示
8、一个复杂的条件。例如,判别某一年year是否闰年。闰年的条件是符合下面二者之一:能被4整除,但 不能被100整除。能被4整除,又能彼400整除。可以用一个逻辑表达式来表示:year40&(year100!=0|year400=0)当year为某一整数值时,上述表达式值为真(1),则year为闰年;否则为非闰年。可以加一个“!”用来判别非闰年:!(year40&year100!=0|year400=0)若表达式值为真(1),year为非闰年。也可以用下面逻辑表达式判别非闰年:(year4!=0)|(year100=0|year400!=0)表达式为真,year为非闰年。请注意表达式中右面的括弧内
9、的不同运算符(,!,&、=)的运算优先次序。43 if语句语句 if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。4.3.1 if语句的三种形式语句的三种形式 C语言提供了三种形式的if语句:1if if (表达式)(表达式)语句语句 例如:if(xy)printf(”d”,x);这种if语句的执行过程见图0表达式语句12ifif(表达式)(表达式)语句语句1 else 1 else 语句语句2 2 例如:if(xy)printf(”d”,x);else printf(”d”,y);见图表达式表达式语句语句1语句语句2真假3 if if (表达式(表达
10、式1 1)语句语句1 1 else if else if(表达式(表达式2 2)语句语句2 2 else if else if(表达式(表达式3 3)语句语句3 3 else if else if (表达式(表达式m m)语句语句m m else else 语句语句n n 流程图表达式表达式1FT表达式表达式3FT表达式表达式2FT表达式表达式4FT语句语句4语句语句5语句语句3语句语句2语句语句1 例如。if(number500)cost015;else if(number300)cost=010:else if (number100)cost=0075;else if(number50)c
11、ost0.05;else cost0;说明:三种形式的if语句中在if后面都有“表达式”,一般为逻辑表达 式 或 关 系 表 达 式。例 如,if(a=b&.x=y)printf(”a=b,x=y”);系统对表达式的值进行判断,若若为为0 0,按按“假假”处处理理,若若为为非非0 0,按按“真真”处处理理,执行指定的语句。假如有以下语句:if(3)printf(“ok.”);是合法的,执行结果输出”ok”。因为表达式的值为3,按“真”处理。由此可见,表达式的类型不限于逻辑表达式,可以是任意的数值类型(包括整型、实型、字符型、指针型数据)。例如,下面的语句也是合法的:if(a)printf(”d
12、”,a);执行结果:输出a的AscII码97。2第二、第三种形式的讨语句中,在每个else前面有一分号,整个语句结束处有一分号。例如:if (x0)printf(“%f”,x);else printf(“%f”,-x);这是由于分号是C语句中不可缺少的部分,这个分号是让语句中的内卧语句所要求的。如果无此分号,则出现语法错误。但应注意,不要误认为上面是两个语句(if语句和else语句)。它们都属于同一个if语句。else子句不能作为语句单独使用,它必须是if语句的一部分,与if配对使用。3在if和else后面可以只含一个内嵌的操作语句(如上例),也可以有多个操作语句,此时用花括号“”将几个语句括
13、起来成为一个复合语句。如:if (abc&bca&cab)s=05*(ab+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(”area6.2f”,area);else printf (”it is not a trilateral”);注意在 外面不需要再加分号。因为 内是一个完整的复合语句,不需另附加分号。例4。1输入两个实数,按代数值由小到大次序输出这两个数。/*example 4.1 at page 53*/main()float a,b,t;scanf(%f,%f,&a,&b);if(ab)t=a;a=b;b=t;printf(%5.2f,%5.2f,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 逻辑运算
限制150内