运算符与表达式2.ppt_第1页
运算符与表达式2.ppt_第2页
运算符与表达式2.ppt_第3页
运算符与表达式2.ppt_第4页
运算符与表达式2.ppt_第5页
已阅读5页,还剩56页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

运算符与表达式,主要内容,算术运算 赋值运算 逗号运算 关系运算 逻辑运算 条件运算 求字节数运算 位运算,一、算术运算,算术运算对数值量所进行的计算。通过算术表达式来实现。,(一)算术运算符,二元运算符 一元运算符,二元运算符,必须连接两个运算量。 + 加 求和 - 减 求差 * 乘 求积 / 除 求商 % 求余数(取模) 注意:只能求两个整数的余数,其符号与被除数的符号相同。 如: 8%3=2,-8%3= -2,8%(-3)=2 C语言中不含乘方运算符。如: x2 x*x x3 x*x*x,一元运算符,只连接一个运算量。 + 正值 - 负值 + 加1(自增)运算(使变量值增加1) - 减1(自减)运算(使变量值减少1) 如: +i i=i+1 -i i=i-1,说明:,+或-可写于变量之前或之后,称之为前缀或后缀。区别在于后缀表示先取值后计算,前缀表示先计算后取值。 如: n+ 先取n值,再令n=n+1 +n 先令n=n+1,再取n值 n- 先取n值,再令n=n-1 -n 先令n=n-1,再取n值,单独对一个变量进行前缀或后缀运算并形成一条语句时,该变量的运算结果是相同的。 如: I=5时,执行“I+;”或“+I;”后,I值均为6。,对变量进行前缀或后缀运算并让其出现在表达式中,则前缀运算为先变化后取值(参加运算),后缀运算为先取值(参加运算)后变化。 如: i=5; j=5; x1=+i; x1=6,i=6; x2=j+; x2=5,j=6,例 Li03001.c 例 Li03002.c 例 Li03003.c,+或-只能对变量施加运算,而不能对常量或表达式施加运算。 如:以下均为错误用法 +(25), -(x+y), +i-,(二)算术表达式,算术表达式用算术运算符连接数值型运算量而得到的式子。 数量型运算量char、int、float、double型的常量、变量或函数。,1、算术运算符的优先级和结合性,优先级不同运算符同时出现在表达式中时进行运算的优先次序。 结合性同一优先级的运算符同时并连续出现在同一表达式中时进行运算的顺序(从左到右或从右到左)。,注意:,用圆括号可提高某个运算符的优先级或结合性。 如: 3*5/4%2 (3*5)/4)%2 -i+ -(i+) (a+b)*(a-b) C语言允许多重圆括号嵌套使用,不能用方括号或花括号。,2、算术表达式的类型,与表达式值的类型相同。,如果表达式只含有同类型的运算量,那么直接进行运算,其运算结果也是同类型的。 如: 3/2=1 整型int 3.0/2.0=1.5 双精度型double,如果表达式中含有不同类型的运算量,那么C语言编译系统将自动对其进行转换与运算。首先将char与short int转换为int,float转换为double,然后在每一步运算中将精度较低的运算量转换为精度较高的类型,再与精度较高的运算量进行运算,运算结果为精度较高的类型。 (低精度) charshort intintunsigned intlong intfloatdoublelong double(高精度),3、强制类型转换,格式: (类型关键字)(表达式) 功能: 强制将指定表达式的值的类型转换为指定的类型。 说明: 强制类型转换也是一种一元运算符,与其它一元运算符的优先级相同。 如: 若I为int型,则I/2为整数,(float)I/2为小数。 若x为float型,则x%3为错,(int)x%3则对。,注意: 类型关键字必须用括号括起来。 对一个表达式进行转换时,应用括号将其括起来。 转换后只转变值的类型而不改变原变量或表达式的类型。 float或double转换为int时,对小数部分是四舍五入还是简单截断取决于具体系统。在TC、VC中,采用截断小数的办法。,例 Li03004.c,二、赋值运算,(一)赋值运算符,简单赋值运算符 = 复合赋值运算符 算术运算:+=,-=,*=,/=,%= 位操作:=,&=,|=,= 优先级与结合性 所有的赋值运算符都处于同一个优先级,且优先级很低(仅高于逗号运算符而低于其它所有的运算符),结合性为从右到左。,赋值运算符为二元运算符,需要连接两个运算量,且左边必须是变量或数组元素,右边则是一个表达式。 如: x=e x+=e x=x+e x-=e x=x-e x*=e x=x*e x/=e x=x/e x%=e x=x%e,注意:使用复合赋值运算符时,右边的运算量应视为一个整体。 如: x*=y+5 x=x*(y+5),(二)赋值表达式,用赋值运算符将一个变量(左边)与一个表达式(右边)连接起来,即构成一个赋值表达式。 v=e 对赋值表达式来说,左边变量的值就是该赋值表达式的值,该变量的类型就是该赋值表达式的类型。,在赋值表达式中,当左边变量v与右边表达式e的数据类型不一致时,C语言编译系统将自动将e的类型转换为与v相同的类型后再赋值。 转换规则: 低精度高精度 高精度低精度,赋值表达式可以出现在表达式可以出现的任何地方,如作为printf()函数的输出项、算术表达式中的一个运算量。此外,还可以作为赋值运算符的一个运算量组成新的赋值表达式。 如: x=y=z=6 z=6,y=z(=6),x=y(=6) a+=a-=a*a a=a-a*a , a=a+a k=5+(c=6) c=6 , k=5+c=11,例 Li03005.c,三、逗号运算(顺序运算),(一)逗号运算符,逗号运算符是一个二元运算符,用于将若干个独立的表达式隔开。 在所有C语言的运算符中,其优先级是最低的。 如果多个逗号同时出现在表达式中,其结合性为从左到右,故称为顺序运算。 如:a=3*5,a*4,a+5 注意:在C语言中,逗号通常也用作分隔符,用于分隔若干数据项,特别是用于分隔变量说明中的变量或函数形式参数中的形参。,(二)逗号表达式,用逗号将若干个独立的表达式隔开,即构成一个逗号表达式。,1、逗号表达式的值,逗号表达式中最右边一个表达式的值,即为该逗号表达式的值。 如: 当a的初值为5时,对于逗号表达式 a=3*5,a*4,a+5 其值为20。 当a的初值为5时,对于赋值语句 a=(3*5,a*4,a+5); 结果为a=10,例 Li03006.c,2、逗号表达式的应用,用一个逗号表达式语句可代替多个赋值语句。 如:a=0;b=1;c=2; a=0,b=1,c=2; 用一个逗号表达式语句可得到多个计算结果。 如:y=10; x=(y=y-5,60/y); x=12,y=5,当某些语法位置只允许出现一个表达式时,用逗号表达式可实现多个表达式的运算。 如:for循环 for(i=0,j=0; i8 i+,j+) ,四、关系运算与逻辑运算,关系运算即比较运算,包括大小比较与相等性比较。 逻辑运算将关系运算连接起来,以进行更复杂的比较。,(一)关系运算符与逻辑运算符,1、关系运算符,两类,共六种: 不等性比较 大于 = 大于或等于 = 小于或等于 相等性比较 = = 等于 != 不等于,关系运算符用于对两个有关的数据进行比较。 如: a+bc-d b*b-4*a*c= =0,关系运算的结果是一个逻辑值: 1 真(比较成立) 0 假(比较不成立) 如: 09 0 (不成立) 100!=20 1 (成立),2、逻辑运算符,三种: ! 非(一元运算符) & 与(二元运算符) | 或(二元运算符) 逻辑运算符用于连接逻辑型的运算量(如逻辑值“真”、“假”或关系表达式)。主要用来对关系运算进行逻辑连接。,如: 对于数学不等式 0x1 可表示为以下逻辑表达式 x=0 & x=0,逻辑运算的结果为逻辑值(真或假): 1 真 0 假 逻辑运算符的运算规律:,注意: C语言不提供逻辑型数据,对逻辑值与数值不加区分(与其它高级语言不同)。 关系运算或逻辑运算的结果是1(真)或0(假)。 任何非0数据均可视为逻辑“真”,0则视为逻辑“假”。,如: 100&-100 1(真) 0|123 1(真) !(-5) 0(假) 10099 1(真) 10099 0(假),3、优先级与结合性,优先级: 关系与逻辑运算符的优先级均低于算术运算符、高于赋值运算符。 关系运算符的优先级分为两种情况,即:四个不等性比较运算符处于同一优先级,两个相等性比较运算符处于同一优先级,且前者优先级高于后者。 逻辑运算符分为三个优先级,由高到低依次为!、&、|。 结合性: 均为从左到右,(二)关系表达式与逻辑表达式,1、关系表达式,由关系运算符连接起来的表达式。其一般形式为: 表达式 关系运算符 表达式 其中,表达式可以是算术表达式、赋值表达式、关系表达式等。,如: a+bc-d a+1(c=6) (其值为0) a(bc) a!=(b=c),例:已知a=3,b=2,c=1,判断以下关系表达式的值。 ab 1(真) (ab)= =c 1(真) 1 1 b+cb d=1 1 f=abc f=0 1 1,2、逻辑表达式,用逻辑运算符连接起来的表达式。其一般形式为: 表达式 逻辑运算符 其中,表达式可以是关系表达式或逻辑表达式等。,例: 3*(a+b)c&a+|c!=0&!EOF 若a=3,b=4,c=5,EOF=1,则值为1。 若a=0,b=1,c=2,EOF=1,则值为0。,例 Li03007.c 例 Li03008.c 例 Li03009.c,五、条件运算,条件运算符:为三元运算符,由“?”与“:”组成。 条件表达式:由条件运算符连接三个运算对象所构成的表达式。 格式: ?: 功能:若0,则将的值作为整个条件表达式的值。否则将的值作为条件表达式的值。(相当于一个ifelse语句。),例:设a=10,b=20,计算表达式的值。 (1) ab ? a+b : a-b 结果:-10 (2) a-b0 ? a*b : a*3 结果:200,条件运算符的优先级:高于赋值运算符和逗号运算符,低于其他运算符。 条件运算符的结合性:从右到左。 例: exp1?exp2:exp3?exp4:exp5 exp1?exp2:(exp3?exp4:exp5) exp1?exp2?

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论