运算符与表达式(中兴)

上传人:tian****1990 文档编号:75096165 上传时间:2019-01-30 格式:PPT 页数:28 大小:297.96KB
返回 下载 相关 举报
运算符与表达式(中兴)_第1页
第1页 / 共28页
运算符与表达式(中兴)_第2页
第2页 / 共28页
运算符与表达式(中兴)_第3页
第3页 / 共28页
运算符与表达式(中兴)_第4页
第4页 / 共28页
运算符与表达式(中兴)_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《运算符与表达式(中兴)》由会员分享,可在线阅读,更多相关《运算符与表达式(中兴)(28页珍藏版)》请在金锄头文库上搜索。

1、2019年1月30日星期三,第五讲 运算符和表达式,讲师: 程浩,学习目标,1.熟练应用各种算术运算符的优先级和结 合性 2.熟练应用各关系运算符的优先级和关系 表达式值的判定 3.熟练应用各逻辑运算符的优先级和逻辑 表达式值的判定 4.熟练应用赋值运算符的结合性和优先级 5.熟练应用自增/减运算符的作用、自增/减 运算的前置方式和后置方式的区别 6.理解逗号表达式的作用及其值的计算 7.了解C语言的常用运算符的优先级,学习重点:,算术运算符的优先级和结合性 关系运算符的优先级和关系表达式值的判定 逻辑运算符的优先级和逻辑表达式值的判定,学习难点:,自增/减运算符的作用、自增/减运算的前置方式

2、和后置方式的区别,一、算术运算符及算术表达式(1),算术运算符 + :加法运算符。如1+2的结果为3。 - :减法运算符,或负值运算符。如5-3、-2的结果 分别为2和-2。 * :乘法运算符。如2*3的结果为6。 / :除法运算符。如4/2的结果为2。 % :模运算符,或称取余运算符,要求%两侧均为整型数据。如 8%3的结果为2。 注意 运算的数据都是整型数据时,结果为整型,如果有实数,则结果为double型。 模运算符要求运算符两侧必须为整型数据,如果不是整型数据可以采用强制类型转换。例如x为float型, (int)x%2,一、算术运算符及算术表达式(2),算术表达式 用算术运算符将数据

3、对象连接起来的式子,称为算术表达式。表达式的运算按照运算符的结合性和优先级来进行。 C规定了运算符的结合方向,即结合性。算术运算符的结合性是从左往右算。例如表达式2+3+4,先算2+3 C语言规定负值运算符优先级高于乘、除、模运算符,乘、除、模运算符优先级高于加、减运算符,当表达式中优先级相同时,按照运算符的结合性。 例如:3+4*3/-2,计算次序:-、*、/、+。 如果需要先计算优先级低的可以使用小括号“()”,小括号的优先级最高。,一、算术运算符及算术表达式(3),例题 程序L5_1.C功能:计算a+3*-2/(int)(a+b)-12的结果,其中a=1.7,b=2.4。 #includ

4、e void main() float a=1.7,b=2.4,s; s= a+3*-2/(int)(a+b)-12 printf(“result is %fn“,s); ,二、关系运算符及关系表达式(1),关系运算符 4。 :大于运算符。如xy。 = :大于等于运算符。如x=0。 = :等于运算符。如a= =b。 != :不等于运算符。如y!=1。 两个数据在进行值的比较,其结果不是“真”就是“假”。 在C语言中,任何非0值为“真”,0值为“假”。关系运算的结果仅产生两个值:1表示“真”,0表示“假”。,二、关系运算符及关系表达式(2),关系运算符结合性与优先级 关系运算符的结合性为“自左至

5、右”。 例如543,计算时先算54,条件成立结果为1,再与3比较,即13,条件不成立,所以最终结果为0。 关系运算符中、=的优先级相等,= =、!=优先级相等,且前者高于后者。 例如1= =43,“”的优先级高于“= =”,所以43结果为1,1= =1结果为1。 关系运算符的级别小于算术运算符。例如2+35-1,运算次序为+、。,二、关系运算符及关系表达式(3),用关系运算符将两个数据或表达式连接起来的式子,称为关系表达式。关系表达式的值为1或0。 例5.2 阅读程序,写出结果并演算。 #include void main() int a=5,b=4,c=3; int s,t; if (abc

6、) s=a; else s=0; t=(a-cc+2= =0); printf(“s=%d,t=%dn“,s,t); 举一反三 :计算2+4= =6*(2!=1)的结果。,三、逻辑运算符及逻辑表达式(1),逻辑运算符 逻辑运算表示两个数据或表达式之间的逻辑关系。 C语言提供的逻辑运算符有三种:逻辑与运算符“&”、逻辑或运算符“”、逻辑非运算符“!”。 逻辑运算的结果也只有两个:“真”为1和“假”为0。 逻辑与,即&:为便于理解,可以写为“条件1&条件2”,则逻辑与运算结果为“只有当条件1成立并且条件2也成立时,逻辑与成立,结果为“真”即值1,其余情况结果为“假”即值0”。所以条件1或条件2只要

7、有一个不成立,逻辑与的结果都为“假”。如(x3)&(x5),则x取值在3与5之间,结果为1,否则为0。,三、逻辑运算符及逻辑表达式(2),逻辑运算符 逻辑运算的结果只有两个:“真”为1和“假”为0。 逻辑或,即 :同样可以写为“条件1 条件2”,逻辑或运算结果为“当条件1成立或者条件2成立时,逻辑或成立,结果为“真”即值1,其余情况结果为“假”即值0”。所以只有当条件1和条件2都不成立时,逻辑或的结果才为“假”。如(x3) (x3),则x取值不是大于3的,即x小于等于3时,结果为1,否则结果为0。,三、逻辑运算符及逻辑表达式(3),逻辑运算符 #include void main() prin

8、tf(“%d,%d,%d,%dn“,(43) 运行结果 : 1,0,0,0 1,1,1,0 0,1,三、逻辑运算符及逻辑表达式(4),逻辑运算符结合性与优先级 逻辑运算符“!”的结合性为“自右至左”、“&”和“”的结合性为“自左至右”。 逻辑运算符的优先级为“!”高于“&”高于“”。例如表达式!(35)&(41),则!的运算结果为假、&的运算结果为假,最终的结果为假,即该表达式的值为0。 “!”的优先级高于算术运算符,“&”和“”的优先级低于关系运算符。例如: 3+1626)(2b!=0&!(a= =0)等价于(ab)!=0)&(!(a= =0),如果a=4,b=3,结果为1。,三、逻辑运算符

9、及逻辑表达式(4),逻辑表达式 逻辑表达式的值为1或0。由于C语言编译系统在判断一个量为“真”、“假”时,以0为“假”,以非0为“真”。所以逻辑运算符也可以直接连接数据,如!4的结果为0、3 举一反三 :计算20&(3-2*4)的结果。,4为非0,即为真 !4!(真)假0,三、逻辑运算符及逻辑表达式(5),熟练掌握C语言的关系运算符和逻辑运算符,可以自如地描述各种复杂的条件。 例如要判断某一年year是否是闰年,需要满足下列条件之一: 该年可以被4整除,但不能被100整除。 该年可以被400整除。 则可以用逻辑表达式表示为: (year%4= =0&year%100!=0) (year%400

10、= =0) 上述表达式成立则为闰年,否则为非闰年。 试编程实现:输入一个年份,判断是否是闰年。,四、赋值运算符及赋值表达式(1),C语言中最常见的赋值运算符是“=”,其作用是将赋值运算符右边的表达式赋予左边的变量 变量=表达式 例如:x=4。 赋值运算符的结合性为从右至左,其优先级低于算术运算符、关系运算符和逻辑运算符。 例如 i=j=2+3;,2+3; j=5; i=j,四、赋值运算符及赋值表达式(2),复合赋值运算 算术运算符“+ * / %”和赋值运算符“=”的结合 +=:加赋值运算符。如a+=3+1,等价于 a=a+(3+1)。 -=:减赋值运算符。如a-=3+1,等价于 a=a-(3

11、+1)。 *=:乘赋值运算符。如a*=3+1,等价于 a=a*(3+1)。 /=:除赋值运算符。如a/=3+1,等价于 a=a/(3+1) %=:取余赋值运算符.如a%=3+1,等价于a=a%(3+1)。 复合赋值运算符的作用是先将复合运算符右边表达式的结果与左边的变量进行算术运算,然后再将最终结果赋予左边的变量 复合运算要注意:一是复合运算符左边必须是变量;二是复合运算符右边的表达式计算完成后才参与复合赋值运算。 复合赋值运算符的结合性和优先级等同于简单的赋值运算符“=”。,四、赋值运算符及赋值表达式(2),#include void main() int a=10,b=10; printf

12、(“%dt”,a+=a- =a*a); printf(“%d ”,b+=b- =b*=b); 运行结果 :-180 0 复合运算符常用于某个变量自身的变化,尤其当左边的变量名很长时,使用复合运算符书写更方便。 举一反三 :计算a=3时,表达式a*=4+(a%=2)的结果。,a*a=100 a=a-100=-90 a=a+a=-180,b=b*b=100 b=b-b=0 b=b+b=0,五、自增运算符与自减运算符(1),自增和自减运算符主要用于给一个变量加1或减1。 自增和自减运算符及其功能如下: +:自增运算符。如a+,+a,都等价于a=a+1。 -: 自减运算符。如a-,-a,都等价于a=a

13、-1。 自增和自减运算符是单目运算符,可以放到变量前面(前置方式)或者后面(后置方式),这两种方式同样实现了变量的自增或自减运算。但是结果是不同的。 前置运算时变量先做自增或自减运算,再将变化后的变量值参加表达式中的其它运算。后置运算时变量在参加表达式中的其它运算之后,再做自增或自减运算。,五、自增运算符与自减运算符(2),当a=10时,x=a+的结果是x=10,a=11。而x=+a的结果是x=11,a=11。 当a=10时,x=a-的结果是x=10,a=9。而x=-a的结果是x=9,a=9。 所以一个变量的前置自增(减)运算和后置自增(减)运算仅表明该变量使用其值参加运算与其值自身变化之间的

14、先后关系,即前置运算是变量先变化后使用,而后置运算是先使用后变化。 此外需要说明的是变量的自增或自减运算与该变量在表达式中的运算顺序无关,x=a; a=a+1,a=a+1 x=a;,五、自增运算符与自减运算符(3),#include void main() int a1,a2,a3,a4,b1,b2,b3,b4; a1=a2=a3=a4=10; b1=(a1+)+(a1+)+(a1+); b2=(+a2)+(+a2)+(+a2); b3=(a3-)+(a3-)+(a3-); b4=(-a4)+(-a4)+(-a4); printf(“a1=%d,a2=%d,b1=%d,b2=%dn“,a1,a

15、2,b1,b2); printf(“a3=%d,a4=%d,b3=%d,b4=%dn“,a3,a4,b3,b4); 运行结果 :a1=13,a2=13,b1=30,b2=39 a3=7,a4=7,b3=30,b2=21,b1=a1+a1+a1; a1=a1+1; a1=a1+1 a1=a1+1,a2=a2+1; a2=a2+1 a2=a2+1 b2=a2+a2+a2;,六、逗号运算符及逗号表达式(1),逗号运算符主要用于连接表达式。: a=a+1,b=3*4; 用逗号运算符连接起来的表达式称为逗号表达式 表达式1,表达式2, ,表达式n 逗号表达式的运算过程是:先算表达式1,再算表达式2,依次

16、算到表达式n。 整个逗号表达式的值是最后一个表达式的值。逗号表达式的结合性从左至右.它的优先级是最低的。 b=(a=4,3*4,a*2) 等价于 a=4; 3*4; b=a*2;,六、逗号运算符及逗号表达式(2),#include void main() int a=3,b=4,c=1,max,t; if (ab,ac) max=a; else max=0; t=(a+3,b+1,+c); printf(“max=%d,t=%dn“,max,t); 运行结果 :max=3,t=2 举一反三 :判断输出结果printf(“%d,%dn”,(3,4,5),(a=3,a=0,a+=2),if(ac),t=+c,七、条件运算符和条件表达式(1),条件运算符是C语言的唯一的三目运算符,即它需要3个数据或表达式构成条件表达式。 表达式1?表达式2:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号