《c语言程序设计教学资料》第3章-运算符与表达式.ppt

上传人:wuy****n92 文档编号:72953696 上传时间:2023-02-14 格式:PPT 页数:52 大小:816.50KB
返回 下载 相关 举报
《c语言程序设计教学资料》第3章-运算符与表达式.ppt_第1页
第1页 / 共52页
《c语言程序设计教学资料》第3章-运算符与表达式.ppt_第2页
第2页 / 共52页
点击查看更多>>
资源描述

《《c语言程序设计教学资料》第3章-运算符与表达式.ppt》由会员分享,可在线阅读,更多相关《《c语言程序设计教学资料》第3章-运算符与表达式.ppt(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第三章运算符和表达式第三章运算符和表达式常用运算符和表达式运算符的优先级和结合性第三章运算符和表达式第三章运算符和表达式 内容提要:内容提要:常用运算符和表达式 运算符按性质分类:(1)算数运算符:+-*/%(2)关系运算符:=!=(3)逻辑运算符:!&|(4)位运算符:|&(5)赋值运算符:=(6)条件运算符:?:(7)逗号运算符:,(8)指针运算符:*&(9)求字节数运算符:sizeof(10)强制类型转换运算符:(类型名)(11)分量运算符:-.(12)下标运算符:(13)其它数运算符:函数调用运算符()常用运算符和表达式运算符按运算所需对象(操作数)的个数分类:(1)单目运算符(仅对一

2、个运算对象进行操作)+-!-(2)双目运算符(需要两个操作数)+-*/%等(3)三目运算符(需要三个操作数)?:(唯一的一个三目运算符)p表达式是运算符、变量、常量和函数的任意组合构成的式子。p优先级是指表达式中包含多个运算符时,先进行优先级高的运算符操作,然后进行运算级低的运算符操作。当表达式中包含的几个运算符的优先级完全相同时,由运算符的结合性来决定它们的运算顺序。p结合性同一优先级,自左向右,为左结合性,反之为右结合性。p运算符的两侧数据类型不同,需要数据类型转换。常用运算符和表达式-有些运算符的结合方向为自右向左,如赋值运算符。算数运算符和算数表达式基本的算术运算符:(加法运算符。如:

3、35、)(减法运算符,或负值运算符。如:52、3)*(乘法运算符。如:3*5)(除法运算符。如:53,5.03)(模运算符,或称求余运算符,两侧均应为整型数据,如:74的值为3)。算数运算符和算数表达式例:12/5=212.0/5=2.4整型+(-、*、/)整型=整型实型+(-、*、/)实型=实型若一个操作数为整型,另一个操作数为实型,结果是实型算数运算符和表达式例:1/2=-5/2=-5/2.0=例:5%2=-5%2=5/-2=1%10=5%1=5.5%2=0-2-2.51-1110类型转换p 同种数据类型的运算结果,还是该类型p 不同数据类型的运算结果,是两种类型中取值范围更大的那种例:计

4、算2L+3*4.5p如果自动转换不符合需要,可以要求做特定类型转换。(类型)表达式例:(int)(3.6*15.8)+42.032L3.0C4.513.515.5例:#includemain()intm=5;printf(“m/2=%dn”,m/2);printf(“(float)(m/2)=%fn”,(float)(m/2);printf(“(float)m/2=%fn”,(float)m/2);运行结果:m/2=2(float)(m/2)=2.000000(float)m/2=2.500000类型转换算术表达式和运算符的优先级与结合性用算术运算符和括号将运算对象(也称操作数)连接起来的、符

5、合语法规则的式子,称为算术表达式。运算符运算符类型类型含义含义优先级优先级结合性结合性-单目取负值1从右向左*双目乘法运算2从左向右/双目除法运算从左向右%双目求余运算从左向右-双目减法运算3从左向右+双目加法运算从左向右例:(-16/3*2+1)%6=-3算数运算符和表达式函数名函数名功能功能函数名函数名功能功能sqrt(x)x平方根,x大于等于0exp(x)ex的值fabs(x)x的绝对值pow(x,y)xy的值log(x)lnx的值sin(x)sinx的值,x为弧度值log10(x)lgx的值cos(x)cosx的值,x为弧度值使用标准数学函数时,程序开头必须加上编译预处理命令。#inc

6、lude例:给出三角形的三边长,求三角形面积。解题思路:假设给定的三个边符合构成三角形的条件关键是找到求三角形面积的公式公式为:其中s=(a+b+c)/2#include#include/调用数学函数加此行intmain()doublea,b,c,s,area;a=3.67;b=5.43;c=6.21;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);/函数printf(a=%ftb=%ft%fn,a,b,c);printf(area=%fn,area);return0;实验P43 面积:体积:#include#include#definePI3.14159m

7、ain()doubler,surf,volu;printf(“Inputr:”);scanf(“%lf”,&r);surf=4*PI*pow(r,2);volu=4.0/3.0*PI*pow(r,3);printf(“surf=%lfn,surf);printf(“volu=%lfn,volu);运行结果:运行结果:Input r:.5.0Input r:.5.0surf=314.159000surf=314.159000Volu=523.598333Volu=523.598333#include#definePI3.14159main()doubler,surf,volu;printf(“I

8、nputr:”);scanf(“%lf”,&r);surf=4*PI*r*r;volu=4.0/3.0*PI*r*r*r;printf(“surf=%lfn,surf);printf(“volu=%lfn,volu);算数运算符和表达式常见错误:(1)将*省略,或者写成。(2)使用或者限定表达式的运算顺序。只能用()(3)使用数学函数运算时,未将参数()括起来,且未注意其定义域要求参数的单位。(如:三角函数参数的单位是弧度,不是角度,开平方函数的参数不能小于0等)说明:(1)两个整数相除的结果仍为整数,舍去小数部分的值。(2)求余运算先定参与运算的两个操作数为整数。(3)运算符的两侧数据类型不

9、同,先自动进行类型转换,使二者具有同一种类型,然后进行运算。赋值运算符与表达式赋值运算符含义是将一个数据赋给一个变量三种赋值形式:(1)简单赋值变量名=表达式 a=c+d赋值表达式左边必须是变量,而不能是常量或者表达式,右边是合法的C语言表达式。例:i+3=i a*b=c*8 5=x 错误赋值表达式中的“表达式”,又可以是一个赋值表达式(2)多重赋值变量1=变量2=变量n=表达式等价于:变量1=(变量2=(=(变量n=表达式)a=b=7+1赋值运算符与表达式(3)复合赋值变量 复合赋值符表达式等价于:变量=变量 赋值符 表达式p 在赋值符“=”前加上某些运算符,可以构成复合赋值运算符,复合赋值

10、运算符可以构成赋值表达式p C语言规定可以使用10种复合赋值运算符+=、-=、*=、/=、%/、=、|=、=、&=赋值运算符与表达式运算符运算符例子例子等价形式等价形式+=a+=ba=a+b-=a-=ba=a-b*=a*=ba=a*b/=a/=ba=a/b%=a%=ba=a%b赋值运算符与表达式例:已知变量a=3,求分别执行下列语句后,变量a的值分别是多少 a+=a-=a*a;a+=a-=a*=a;常见错误:没有将复合赋值运算符右侧的表达式作为一个整体参与运算例:n*=m+1n=n*m+1(错)n=n*(m+1)(对)增1和减1运算符说明:p 自增、自减运算符+-p 作用:使变量值加1或减1p

11、 种类:前置 +i,-i (在使用i之前,先使i的值加(减)1)后置 i+,i-(先使用i值,再使i的值加(减)1)增1和减1结合方向:自右向左增1和减1都是单目运算符,只需一个操作数,操作数只能是变量,不能是常量和表达式。如:5+,(a+b)+增1和减1运算符运算符运算符等价形式等价形式+xx=x+1x+x=x+1-xx=x-1x-x=x-1语句语句等价语句等价语句m=n+m=n;n=n+1;m=n-m=n;n=n-1;m=+nn=n+1;m=n;m=-nn=n-1;m=n;p+或-作为前缀或后缀运算符使用时,对变量而言,结果是一样的,但对于表达式而言,结果不一样。设a=5(1)b=+a (

12、2)b=a-(3)b=-a(4)b=a+a=6,b=6a=4,b=5a=4,b=4a=6,b=5例j=3;k=+j;j=3;k=j+;a=3;b=5;c=(+a)*b;a=3;b=5;c=(a+)*b;/k=4,j=4/k=3,j=4/c=20,a=4/c=15,a=4例:若n=3,则执行完m=-n+后,m,n分别是多少m=-(n+)m=-nn=n+1m=-3n=4例:j=+i-2等价于:i=i+1;j=i-2;j=i+-2等价于:j=i-2;i=i+1;增1和减1运算符逗号运算符和逗号表达式p 逗号运算符:,p 作用:连接两个表达式p 优先级:所有运算符中优先级最低p 结合方向:从左向右p

13、形式:表达式1,表达式2,表达式n逗号表达式的值:等于表达式n的值求解过程:先求表达式1,再求表达式2,依次求下去,直到求出表达式n,整个逗号表达式的值就是表达式n的值例a=3*5,a*4a=3*5,a*4,a+5例x=(a=3,6*3)/a=15,表达式值60/a=15,表达式值20/赋值表达式,表达式值18,x=18注意:并不是任何地方出现的逗号,都是逗号运算符。很多情况下,逗号仅用作分隔符。逗号运算符和逗号表达式关系运算符与表达式运算符运算符类型类型含义含义优先级优先级结合性结合性双目大于从左向右=双目大于等于从左向右=双目等于2从左向右!=双目不等于从左向右关系运算:比较运算,比较两个

14、操作数,看是否满足给定的关系。用于简单的条件判断。关系运算符与表达式例:(1)3.243-1等价于:a=(1+2)(3-1)关系运算符与表达式例:00 2=32=3=5z=3+1=2+3-1=5+6*2等价于z=(3+1)=(2+3-1)=(5+6*2)z=4=4=(无空格)=(关系运算和赋值运算混淆,两者含义不同)(3)误以为语法上合法的关系表达式在逻辑上一定是正确的。例:若a=3,b=2,c=1,则abc。ab11c0逻辑运算符与表达式运算符运算符类型类型含义含义优先级优先级结合性结合性!单目逻辑非1从左向右&双目逻辑与2从左向右|双目逻辑或3从左向右逻辑运算也成布尔运算,用于复杂的条件判

15、断A取值取值B取值取值!AA&BA|B非0非0011非000010非010100100逻辑运算真值表(表征逻辑事件输入和输出之间全部可能状态的表格)(1)&两个操作数都为真时,结果为真。(2)|只要有一个操作数为真,结果为真。例如:若a=3,b=2,c=1,则abc(ab)&(bc)逻辑运算符与表达式在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。p&:若第一个操作数为0时,则第二个操作数不在计算。p|:若第一个操作数为非0,则第二个操作数不在计算。例:例:a=0;b=1;c=2;d=a+&b+&-c;a=0;b=1;c=2;d=a+&b+&-c;运算结果运算结果:d=0,a=1,b=

16、1,c=2:d=0,a=1,b=1,c=2d=d=(a+a+)&(b+b+)&(-c-c);例:例:a=0;b=1;c=2;d=a+|b+|-c;a=0;b=1;c=2;d=a+|b+|-c;运算结果运算结果:d=1,a=1,b=2,c=2:d=1,a=1,b=2,c=2d=d=(a+a+)|(b+b+)|(-c-c);条件运算符与条件表达式有两个符号:?:,它与三个操作数组成三元运算。一般形式:?:求值规则和表达式的值:求解求解表达式表达式1 1真真(非非0)0)求解求解表达式表达式2 2假假(0)(0)求解求解表达式表达式3 3表达表达式式的值的值例:int max,a=5;b=3;max

17、=ab?a:b优先级:逻辑 条件 赋值结果:max=5,a=5,b=3位运算符与表达式运算符运算符类型类型含义含义优先级优先级结合性结合性单目按位取反1从右向左双目左移位,右移位2从左向右&双目按位与3从左向右双目按位异或4从左向右|双目按位或5从左向右位运算真值表A取值取值B取值取值A&BA|BABA000001010111100110111100左移位xn,把x的每一位向右移n位,左边空位补零。从一端移走的不移入另一端,移出的位信息丢失运算量只能是整型或字符型的数据,不能为实型数据。位运算符与表达式“按位与”运算符()参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为

18、1,则该位的结果值为1;否则为0。即:000,010,100,111例:35并不等于8,应该是按位与运算:00000011(3)&00000101(5)00000001(1)注意:注意:如果参加&运算的是负数(如-3&-5),则要以补码形式表示为二进制数,然后再按位进行“与”运算。按位与的用途:p清零若想对一个存储单元清零,即使其全部二进制位为0,只要找一个二进制数,其中各个位符合以下条件:原来的数中为的位,新数中相应位为0。然后使二者进行运算,即可达到清零目的。p取一个数中某些指定位如有一个整数(2个字节),想要取其中的低字节,只需将与8个1按位与即可。0010110010101100abc

19、00000000111111110000000010101100“按位或”运算符(|)两个相应的二进制位中只要有一个为1,该位的结果值为1。即:0|00,0|11,1|01,1|11例:060|017,将八进制数60与八进制数17进行按位或运算。00110000|00001111 00111111 应用:按位或运算常用来对一个数据的某些位定值为。例如:如果想使一个数的低4位改为1,只需将与017进行按位或运算即可。“异或”运算符()异或运算符也称XOR运算符。它的规则是:若参加运算的两个二进制位同号则结果为0(假)异号则结果为1(真)即:00=0,01=1,10=1,11=0即:071052=

20、023(八进制数)00111001 00101010 00010011 例:运算符应用:p使特定位翻转设有01111010,想使其低4位翻转,即1变为0,0变为1。可以将它与00001111行运算,即:01111010 00001111 01110101运算结果的低4位正好是原数低4位的翻转。可见,要使哪几位翻转就将与其进行运算的该几位置为1即可。p与0相,保留原值因为原数中的与0进行运算得,00得0,故保留原数。例如:01200=012 00001010 00000000 00001010p交换两个值例如:3,4。想将和的值互换,可以用以下赋值语句实现:ab;ba;ab;011()10011

21、1(ab的结果,a已变成7)()100011(ba的结果,b已变成3)()111100(ab的结果,a已变成4)“取反”运算符()是一个单目(元)运算符,用来对一个二进制数按位取反,即将0变1,将1变0。例如,025是对八进制数25(即二进制数00010101)按位求反。11101010作用:加密处理初始字节:00000101一次求反后:11111010二次求反后:00000101左移运算符()左移运算符是用来将一个数的各二进制位全部左移若干位。其右边空出的位用0填补,高位左移溢出则舍弃该高位。例如:a=)右移运算符是a2表示将a的各二进制位右移2位0。例:a2 a=017时,a的值用二进制形

22、式表示为00001111,舍弃低2位11:a2=00000011右移一位相当于除以右移一位相当于除以2 2 右移右移n n位相当于除以位相当于除以2n2n。在右移时,需要注意符号位问题:p 对无符号数,右移时左边高位移入0;p 对于有符号的值,-如果原来符号位为0(该数为正),则左边也是移入0。-如果符号位原来为1(即负数),则左边移入0还是1,要取决于所用的计算机系统。有的系统移入0,有的系统移入1。移入0的称为“逻辑右移”,即简单右移;移入1的称为“算术右移”。常用运算符优先级和结合性运算符种类运算符种类说明说明优先级顺序优先级顺序结合性结合性()1先内而外单目运算符!-+-(类型)2从右

23、向左算数运算符*/%+-3从左向右4位运算符5从左向右关系运算符 =!=6从左向右7位运算符&|8从左向右910逻辑运算符&|11从左向右12赋值运算符=+=-=*=/=%=13从右向左逗号运算符,14从左向右用用括括号号来来控控制制运运算算顺顺序序更更方方便便直直观观减减小小出出错错概概率率习题:1.表达式!x|a=b等效于2.设有语句inta=3;则执行了语句a+=a-=a*=a;后,变量a的值是3.解逗号表达式x=a=3,6*a后,表达式值、x、a的值依次为4.如下所示,执行以下程序段后,变量a,b,c的值分别是intx=10,y=9;inta,b,c;a=(-x=y+)?-x:+y;b=x+;c=y;结果:(1)(!x)|(a=b)(2)0(3)18,3,3(4)a=8,b=8,c=10已知inta=12,n=5;则:课后习题P43习题3.2#include#include/调用数学函数加此行main()intx,b0,b1,b2,y;printf(“Inputx:”);scanf(“%d”,&x);x=(int)fabs(x);b2=x/100;b1=(x-b2*100)/10;b0=x%10;y=b2+b1*10+b0*100;printf(“y=%dn,y);运行结果:运行结果:Input x=-123Input x=-123y=321 y=321

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

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁