




已阅读5页,还剩54页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,Module1c:OperatorandExpression,GeorgeCaogeorge.caoOct.13,2009,StudyPurpose,运算符Operator:狭义的运算符是表示各种运算的符号。表达式Expression:使用运算符将常量、变量、函数连接起来,构成表达式。C语言运算符丰富,范围很宽,把除了控制语句和输入/输出以外的几乎所有的基本操作都作为运算符处理,所以C语言运算符可以看作是操作符。,C的运算符有以下几类:,Agenda,2.AssignmentOperator赋值运算符和赋值表达式,1.ArithmeticOperatorandExpression算术运算符和表达式,4.CommaOperator逗号运算符,7.LogicalOperation逻辑运算,8.ConditionalOperation条件运算符,3.Increment执行赋值运算(操作),将10+y的值赋给变量x,同时整个表达式的值就是刚才所赋的值。,2.AssignmentOperator,说明:(1)赋值运算符左边必须是变量,右边可以是常量、变量、函数调用或常量、变量、函数调用组成的表达式。例如:x=10y=x+10y=func()都是合法的赋值表达式。(2)赋值符号“=”不同于数学的等号,它没有相等的含义。(“=”相等)例如:C语言中x=x+1是合法的(数学上不合法),它的含义是取出变量x的值加1,再存放到变量x中。,2.AssignmentOperator,(3)赋值运算时,当赋值运算符两边数据类型不同时,将由系统自动进行类型转换typeconversion。转换原则是:先将赋值号右边表达式类型转换为左边变量的类型,然后赋值。Inta;a=1.546789;Printf(“%d”,a);a=1;(1)C语言的赋值符号“=”除了表示一个赋值操作外,还是一个运算符,也就是说赋值运算符完成赋值操作后,整个赋值表达式还会产生一个所赋的值,这个值还可以利用。,2.AssignmentOperator,赋值表达式的求解过程是:先计算赋值运算符右侧的“表达式”的值将赋值运算符右侧“表达式”的值赋值给左侧的变量。整个赋值表达式的值就是被赋值变量的值。,2.AssignmentOperator,例如:分析x=y=z=3+5这个表达式。根据优先级:原式x=y=z=(3+5);根据结合性(从右向左):x=(y=(z=(3+5)x=(y=(z=3+5),2.AssignmentOperator,1、复合赋值运算符在赋值符“=”之前加上某些运算符,可以构成复合赋值运算符,复合赋值运算符可以构成赋值表达式。C语言中许多双目运算符可以与赋值运算符一起构成复合运算符,即:+=,-=,*=,/=,%=,=,x*=y+1等价于x=x*(y+1)a/=3=a=a/3;注意:赋值运算符、复合赋值运算符的优先级比算术运算符低。,2.AssignmentOperator,结合性原则:“自右向左”如:a=b*=a+2;等价于b=b*(a+2);a=b;exercise:设k=2,i=2,m=(k+=i*=k)则m=i=i=i*k;i=4;k=k+4;k=6;m=6;,2.AssignmentOperator,Agenda,5.DataTypeConversion数据类型转换,2.EvaluatingOperator赋值运算符和赋值表达式,3.Incrementb=+a;则b=6,a=6;b=+a;则a=6,b=6;b=a-;则b=5,a=4;b=-a;则a=4,b=4;,Incrementb=a+;则b=5,a=6;b=+a;则a=6,b=6;b=a-;则b=5,a=4;b=-a;则a=4,b=4;自加、自减运算也是赋值运算,故运算的对象只能是变量,不能是常数或表达式。即:5(x+y)+都是错误的。-ITSERVICE20091020,Increment则a的值为14。又如:a=3*5,a*4先求a=3*5,再求a*4,故整个逗号表达式的值为:60。,例1、假定x和y为double类型,则表达式x=2,y=x+3/2的值是()A)3.500000B)3C)2.000000D)3.000000例2、若已定义x,y为int类型,则表达式:x=2,y=x+3/2.0的值是(),B,4.CommaOperatorandExpression,Agenda,5.DataTypeConversion数据类型转换,2.EvaluatingOperator赋值运算符和赋值表达式,3.SelfAdd/Cut自增自减运算符,6.RelationOperationandExpression关系运算符和表达式,1.ArithmeticOperatorandExpression算术运算符和表达式,4.CommaOperator逗号运算符,7.LogicalOperation逻辑运算,8.ConditionalOperation条件运算符,5.DataTypeConversion数据类型转换,各类数值型数据间的混合运算,整型、单精度型、双精度型数据可以混合运算。前已述及,字符型数据可以与整型通用,因此,整型、实型(包括单、双精度)、字符型数据间可以混合运算。例如10+a+15-87651234b是合法的。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则按下图所示,doublefloatlongunsignedintchar,short,举例说明:假设已指定i为整型变量,f为float变量,d为double型变量,e为1ong型,有下面式子:10十ai*f-d/e运算次序为:进行10a的运算,先将a转换成整数97,运算结果为107。进行i*f的运算。先将i与f都转成double型,运算结果为double型。整数107与i*f的积相加。先将整数107转换成双精度数(小数点后加若干个0,即10700000),结果为double型。将变量e化成double型,d/e结果为double型。将10十ai*f的结果与”d/e结果为double型。上述的类型转换是由系统自动进行的。,5.DataTypeConversion数据类型转换,1、赋值转换C语言允许通过赋值使赋值号右边表达式值的类型转换为其左边变量的类型。如上图1中,右边表达式的值为double类型,但经过赋值运算却转换为int类型。即result中的最终结果为一个整数。即:赋值转换具有强制性,赋值号右边的表达式要强制转换成左边变量的形式。又如:inta;a=5.8;printf(“%d”,a);则输出5。,5.DataTypeConversion数据类型转换,2、不同类型数据的显式转换在C语言中,有一种“强制类型转换运算符”,它能将某一类型的变量强制转换为另一种类型,它的一般形式为:(类型标识符)表达式如:printf(“%c”,(char)(67-1.2);会输出A。如:floatx=4.5;inti;i=(int)x;printf(“%d%f“,i,x);则会输出44.500000即:x的值仍为4.5,i的值为x值的整数部分。又如:(int)(x+y)不能写为int(x+y),5.DataTypeConversion数据类型转换,3、输出转换在输出语句中,也会发生隐式转换。如:floatf=5.8;printf(“%d”,f);则输出5。Exercise:inta=5.8;inti=-1;printf(“%f”,a);printf(“%u”,i);输出结果?,5.DataTypeConversion数据类型转换,Exercises,1、变量a是int类型,并执行了语句:a=A+1.6;则正确的叙述是()A)a的值是字符CB)不允许字符型和浮点型相加C)a的值是浮点型D)a的值是字符A的ASCII码加上1。2、设a、b均为double型变量,且a=5.5;b=2.5,则表达式(int)a+b/b的值是()A)6.500000B)6C)5.500000D)6.0000003、已知intm=3,n=4,x;则x=-m+;x=x+8/+m;后,x=(),m()。,-2,5,Agenda,5.DataTypeChange数据类型转换,2.EvaluatingOperator赋值运算符和赋值表达式,3.SelfAdd/Cut自增自减运算符,6.BitwiseOperator关系运算符和表达式,1.ArithmeticOperatorandExpression算术运算符和表达式,4.Comma逗号运算符,7.LogicalOperation逻辑运算,8.ConditionalOperation条件运算符,6.BitwiseOperator,1、由关系运算符和()将操作数(也叫运算量)连接起来的式子叫逻辑表达式。2、关系运算符的优先级低于算术运算符,高于赋值运算符。(若一个式子中既有关系运算、赋值运算,又有算术运算,先做算术运算,再做关系运算,最后做赋值运算。)如:a=1+23-1等价于:a=(1+2)(3-1)关系成立,a的值为1。,6.BitwiseOperator,又如:2=3表达式值为0,10!9表达式值为1,2=3表达式值为0。又如:23、=、b?a:b);3、条件运算符的结合方向是“自右向左”的。如:ab?a:cd?c:d等价于:ab?a:(cd?c:d)4、表达式2和表达式3不仅可以是数值表达式,还可以是赋值表达式或函数表达式。如:ab?(a=100):(b=100);ab?printf(“%d”,a):printf(“%d”,b);,8.ConditionalExpression,Exercise1.若x=1,y=2,z=3,计算xy?x:(yz?y:z)的值。先计算yz=0,故括号中的部分值为3;剩余部分为:xy?x:3,显然值应为3。Exercise2.x,y,z值为上题所给,计算x=y?(xz?x:z):y,2,8.ConditionalExpression,求字节运算符,sizeof(表达式);求表达式中变量名/常量/数据类型所代表的存储单元所占的字节数e.g.,sizeof(数据类型标识符),如sizeof(int)=2sizeof(常量),如sizeof(1.2)=4(或8)sizeof(变量或表达式),如inta;floatx;sizeof(a+x)=8;,Agenda,5.DataTypeChange数据类型转换,2.EvaluatingOperator赋值运算符和赋值表达式,3.SelfAdd/Cut自增自减运算符,6.RelationOperationandExpression关系运算符和表达式,1.ArithmeticOperatorandExpression算术运算符和表达式,4.Comma逗号运算符,7.LogicalOperation逻辑运算,8.ConditionalOperationandothers条件运算及其他,9.SummaryandReview,SummaryandReview,表达式的运算是分步骤进行的。因此当一个表达式中出现多种运算时,存在优先级的问题。算术运算的优先级如下:,+、-、(type),*、/、%,+、-,逗号运算符,相同优先级,结合顺序从左到右!,相同优先级,结合顺序从右到左!,a=b=c+=2,可以用()调整优先级。,相当于:c=c+2b=ca=b,=、op=,SummaryandReview,%(模运算符或求余运算符,%要求两侧均为整型数据。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广西来宾市投资促进局公开招聘1人模拟试卷完整参考答案详解
- 南阳八中模拟考试题目及答案
- 滑动摩擦课件
- 2025国家卫星气象中心(国家空间天气监测预警中心)招聘留学回国人员(第二批)模拟试卷及答案详解(历年真题)
- 2025巴州大学生乡村医生专项招聘计划预告考前自测高频考点模拟试题及一套完整答案详解
- 硬笔楷书课件
- 2025黑龙江齐齐哈尔市建华区建设街道公益性岗位招聘1人模拟试卷及答案详解参考
- 硬笔书法长横课件
- 2025年陕西教师考试真题及答案
- 2025年青岛胶州市中医医院高级人才引进模拟试卷(含答案详解)
- GB/T 25729-2010粮油机械撞击松粉机
- GB/T 13912-2020金属覆盖层钢铁制件热浸镀锌层技术要求及试验方法
- 虚拟局域网课件
- 统编版历史《三国两晋南北朝的政权更迭与民族交融》课件
- 音乐小动物回家课件20
- 中国桥梁发展史简介
- DB11-T 2006-2022 既有建筑加固改造工程勘察技术标准
- 审计案例第6章筹资与投资循环审计案例
- 神经介入治疗(DSA)及围手术期概述精品PPT课件
- 丙烯酸树脂安全技术说明书
- 焊接工艺评定报告完整版
评论
0/150
提交评论