




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三讲 运算符和表达式,一、表达式,二、算术运算符和算术表达式,四、算术表达式中数据类型的转换,三、标准库函数调用,六、增量运算符与增量表达式,七、逗号运算符与逗号表达式,五、赋值运算 1、赋值运算符和赋值表达式 2、复合赋值运算,一、表达式,表达式:由常量、变量、函数和运算符组成的式子称为表达式。,例:计算圆面积的语句: s = 3.14159 * r * r ; 该语句中, r,3.14159,3.14159 * r , 3.14159 * r * r ,s = 3.14159 * r * r 都是表达式 其中,*是运算符,r是变量,3.14159是常量,表达式的求值规则,按照运算符的优先级和结合性的规定顺序进行。,有的运算符只需要一个运算对象,这种运算符称为单目运算符; 如5中的()负号 需要两个运算对象的称为双目运算符; 如加(),减(),乘(*),除(/),一个表达式有一个值及其类型,它们等于计算表达式所得结果的值和类型。,二、算术运算符和算术表达式,算术运算符:算术运算符用于各类数值运算。算表达式中的运算对象都是算术量,即整型、实型或字符型。,下表为基本的算术运算符:,其中单目运算符负号()的优先级最高,为2,除法运算符“/”进行求商运算。对于不同类型的运算对象,除法表达式计算结果的类型也会不同。,例:计算x/y 如果x,y是整型,则结果为整型,小数部分被略去。 如果x,y中有一个实型量,则x,y都被转化为double类型进行运算,结果为double类型量,运算实例: x,y为整型量: 5/2结果为2,整型量 2/5结果为0,整型量,x,y其中一个为实型量 : 5.0/2或5/2.0或5.0/2.0结果为2.5,实型量,“”是求余运算。ab计算a除以b后的余数,也是a模b的值。它要求两个运算对象都是整型量,其结果也是整型量。,例:52结果为1 25结果为0,例:将数学式改写成算术表达式,一般数学式 a(b+c)+dac,算术表达式 (a*(b+c)+d)*a*c 将方括号改成圆括号,*不能省略,x/(x+y)+1.0/x*y 其中不能出现分数,改用除法运算符,圆括号不能缺少,3.14159*r*r/2.0 其中 为非字母字符,要用实型常量代替,例:基本数学运算符程序实例,main ( ) int a, b, c1, c2 ; a=3, b=-7 ; c1=b/a; c2=b%a; printf( “c1=%dtc2=%dn“, c1,c2 ); c1=a/b; c2=a%b; printf( “c1=%dtc2=%dn“, c1,c2 ); ,程序运行输出: c1=-2 c2=-1 c1=0 c2=3,三、标准库函数调用,对于某些数学运算,如求平方根,指数、对数运算,C语言中有标准库函数对其进行计算。,调用函数格式: 函数名(参数,参数,),其中函数名有由系统提供,不同C的编译系统,提供的函数名不同,使用时需查阅相关手册。,调用函数时,参数的类型必须与系统规定一致。,调用标准库函数之前,通常要用预编译命令“# include”将所需要的库函数信息包含到用户源文件中。,如:在使用数学库函数以前,需使用编译命令 include “math.h”,例:计算 的值, include “math.h” main( ) double x,y; x=5.0; y=7.0; printf(“z=fn”,x*(2.0+pow(x,y); ,四、算术表达式中数据类型的转换,当表达式中的各类数值型数据参与混合运算时,要进行类型转换。,转换方式 自动转换:数据类型自动由低级向高级转换。 强制转换:将表达式的运算结果强制转换成指定的数据类型。,如下表达式是合法的: 13.14159+0+A,自动转换规则:,例:数据类型自动转换实例,有如下变量类型: char c; int i; float f; double d; 计算表达式: c+f+i+d,char float int double,c + f + i + d,int double,double double,double,double,强制转换:,格式: (数据类型说明符)(表达式),注意: 1)强制转换属单目运算,运算优先级为2。 2)强制转换得到的是中间变量类型,原变量 类型不变。,例:int x, y; float z; (float)(x+y); (int)z+x;,五、赋值运算,1、赋值运算符和赋值表达式,赋值表达式的一般格式为: 变量表达式,说明:,赋值运算符左边必须是变量而不能是表达式;,赋值表达式的值是赋值号左边变量被赋值后的值;,例:j+3=j a*b=c*4,左边的语句是错误的,赋值语句左边只能是变量,如果赋值号两边的类型不一致,则将赋值号右边表达式的值的类型转换成赋值号左边变量的类型;,例:float f=1.0; int a=2,b=3; char c=A; f=a+b+c;,赋值表达式f=a+b+c的值,也就是f的值为实型量,结果为70.0,赋值语句可以连续进行。,例:a=b=c=0,该表达式等价于a=(b=(c=0),2、复合赋值运算,算术运算符“+ * / %”和赋值运算符“=”结合起来,形成复合赋值运算符。,变量 OP= 表达式 等价于 变量 = 变量 OP 表达式,用OP表示“+ * / %”,则复合赋值表达式格式为:,+= :加赋值运算符; 如a+=b+3,等价于 a=a+(b+3),-= :减赋值运算符; 如a-= b+ 3,等价于 a=a- (b+3) *= :乘赋值运算符; 如a*= b+ 3,等价于 a=a* (b+3) /= :除赋值运算符; 如a/= b+ 3,等价于 a=a/ (b+3) %= :取余赋值运算符 a%= b+ 3,等价于 a=a% (b+3),复合运算符左边必须是变量;,注意:,复合运算符右边的表达式计算完成后才参与复合赋值运算;,复合赋值运算符的结合性和优先级等同于简单的赋值运算符“=”。,复合运算符常用于某个变量自身的变化,尤其当左边的变量名很长时,使用复合运算符书写更方便。,复合运算符在书写时,两个运算符之间不能有空格。,例:赋值语句程序实例,main( ) int a, b, c; a=b=c=5; printf(”a=%d, b=%d, c=%dn”,a,b,c); a=(b=4)+(c=6); printf(”a=%d, b=%d, c=%dn”,a,b,c); a+=b+c; printf(”a=%d, b=%d, c=%dn”,a,b,c); a+=a-=a*=a; printf(”a=%dn”,a); ,程序运行结果: a=5, b=5, c=5 a=10, b=4, c=6 a=20, b=4, c=6 a=0,六、增量运算符与增量表达式,类别: 单目运算,运算优先级为2,运算符: + 使变量的值增 1 - 使变量的值减 1,结合性及执行过程: 后缀 左结合 i 前缀 右结合 i i,自增、自减运算只能用于变量,不能用于常量和表达式。,注意:,例 +6, +(a+b)均为非法的运算,自增、自减运算符高于基本算术运算符。,自增、自减运算符的运算顺序。,例:自增、自减运算符程序实例1,main ( ) int x, y, t=3; printf(“t=%d:n“, t ); x=t+; printf(“x=%d, t=%dn“, x, t); t=3; printf(“t=%d:n“, t ); y = +t ; printf(“y=%d, t=%dn“, y, t); ,程序运行结果: t=3: x=3, t=4 t=3: y=4, t=4,例:自增、自减运算符程序实例2,main( ) int i, j, k ; i=1; j=1; k=i+j ; printf(“k=%d,i=%d,j=%dn“,k,i,j); ,程序运行结果: k=2,i=2,j=1,表达式 x+y 等价于(x+)+y,例:自增、自减运算符程序实例3,main() int i, k ; i=3; k=i+i+i+ ; printf(“1) k=%dt i=%dn“, k,i); i=3; k = (+i)+(+i)+(+i) ; printf(“2) k=%dt i=%dn“, k,i); ,程序输出: 1) k=9 i=6 2) k=18 i=6,例:自增、自减运算符程序实例4,main ( ) int x, a, b, c, d ; x=3; printf(“%dt%dt%dt%dn“, x, x+, x, x-); a=x=3; b=x+ ; c=x; d=x-; printf(“%dt%dt%dt%dn“,a, b, c, d ); ,程序运行结果: 3 2 2 3 3 3 4 4,七、逗号运算符与逗号表达式,逗号运算符,或称顺序求值运算符 运算符:, 运算优先级:最低,15级 结合性:左结合,逗号表达式:由逗号运算符连接起来的两个或两个以上的表达式。,格式: 表达式1,表达式2, ,表达式n,求解过程:先求表达式1的值,再求表达式2的值,直至求出表达式n的值。整个表达式的值为表达式n的值
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 63380-2:2025 EN Standard interface for connecting charging stations to local energy management systems - Part 2: Specific data model mapping
- 校园防雷安全知识培训课件
- 校园防侵害安全知识培训课件
- 北大荒专业知识培训课件
- 散打理论考试试题及答案
- 残疾汽车考试题及答案
- 农行银行面试题及答案
- 动物防疫考试题及答案
- 企业形象设计试题及答案
- 煤矿顶板考试题及答案
- 董事长的权利、职责、义务(5篇)
- 2024年安全员C证模拟考试1000题(附答案)
- 高中语文课程标准-(修改版)
- K31作业现场安全隐患排除(K3)
- 港口基础设施监测技术
- 人教版小学五年级数学下册《第五单元 图形的运动(三)》大单元整体教学设计2022课标
- 全国中学教师《初中数学》说课教学比赛-主题:《等腰三角形的性质》说课-一等奖课件
- 2024年工会财务知识竞赛试题及答案
- 26个英语字母描红练习(素材)-小学英语
- DL∕T 686-2018 电力网电能损耗计算导则
- 2023年河南省中考数学试卷及答案
评论
0/150
提交评论