




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/11/24,1,C语言程序设计,第三章表达式与运算符,主讲:计算机学院朱立华,2019/11/24,3,内容提要,表达式体现对数据的处理,由运算符和运算对象组成掌握每种运算符的以下知识:对运算对象的要求运算符的结合性运算符的优先级运算结果的特性有多种运算符的复杂表达式的计算顺序及计算结果数据类型的自动转换规则及强制转换的方法,2019/11/24,4,表达式的组成,表达式实现对数据的处理,每个表达式都有唯一的值表达式由运算对象和运算符组成运算对象的种类:常量、变量、有返回值的函数调用、其它表达式例:2arand()(2+a)*rand()运算符:共34种,分为15个不同的优先级,可以理解成是不带运算符的最简单表达式,常量表达式,变量表达式,函数表达式,带运算符的表达式,2019/11/24,5,左值与右值,每个表达式都有唯一确定的值,表达式不是左值就是右值右值:只能出现在赋值号(=)右边的表达式左值:不是右值的表达式就是左值左值与右值的关系:右值只能出现在赋值号的右边;而左值既可以出现在赋值号的左边,又可以出现在赋值号的右边。左值可以取地址,右值不可以取地址.例:2arand()(2+a)*rand()a=b,常量表达式只能作为右值例:a=2;(右值),变量表达式为左值,既可在赋值号左边也可以在右边,例:a=5;(左边)b=a;(右边),此函数表达式为右值例:a=rand()右值),此表达式只能作为右值例:b=(2+a)*rand();(右值),赋值表达式只能作为右值例:c=a=b;(右值)(a=b)=c;(出错),2019/11/24,6,算术运算符,算术运算符主要完成数值计算问题,具体如下表所列,例:inta=3,b,c;a+的表达式结果是3,变量a的值是4;+a的表达式结果是4,变量a的值是4;因此,c=a+执行后,c的值是3,a的值是4b=+a执行后,b的值是4,a的值也是4,例:inta=3;-a结果为-3,但是变量a的值仍为3-2.45是2.45的相反数,例:inta=3,b,c;a-的表达式结果是3,变量a的值是2;-a的表达式结果是2,变量a的值是2;因此,c=a-执行后,c的值是3,a的值是2b=-a执行后,b的值是2,a的值也是2,例:inta=27,b=5,c;表达式a/b结果是5,而不是5.4表达式27.0/b结果是5.4表达式27.0/5.0结果是5.4,例:inta=27,b=5,c;表达式a%b结果是2,表达式-a%b结果是-2表达式27.0%b是错误的,例:表达式2+3结果是5表达式2+3.0结果是5.0表达式2.0+3.0结果是5.0,例:表达式3-2结果是1表达式3.0-2结果是1.0表达式3.0-2.0结果是1.0,2019/11/24,7,算术运算符,程序3.1赋值表达式及算术运算符示例#include#include/包含随机函数rand的声明intmain()inta=5,b=6,c=7;printf(“%dn”,rand();/显示随机数print(%dn,a*(b+c)/2-2);/显示算术表达式的值printf(%dn,a=b);/显示赋值表达式即a的值b=rand()%10;/混合表达式赋0至9之间的1个随机数printf(“%dn”,c=a=b);/显示赋值表达式的值即c的值return0;,413067,2019/11/24,8,关系运算符,关系运算符主要完成表达式间的比较,比较的结果非真即假,C语言中无逻辑类型,故用1表示真,0表示假任何类型的值,只要不等于0,在需要作出真假判断的场合就代表逻辑真。,结论:关系运算符的优先级低于算术运算符,例:cb!=c,例:a=(b算术-关系-逻辑与-逻辑或,例:!A结果为0,!(2+35)结果为1,例:(ab)下表给出了则执行语句a+b8intx=rand()/a,y=rand()/b;printf(%d,%d,%dn,a,b,ab);printf(%d,%d,%dn,x,y,x算术加减-移位-关系-按位与-按位异或-按位或-逻辑与-逻辑或,2019/11/24,18,152=300001111,00,相当于15/22,2019/11/24,19,5,条件运算符,条件运算符是C语言中唯一的1个三目运算符其格式为:表达式1?表达式2:表达式3计算方法及运算结果:先求表达式1得到非0表示真,得到0表示假。如果是真,则条件表达式的值等于表达式2的值(此时表达式3不计算);如果是假,则条件表达式的值等于表达式3的值(此时表达式2不计算)。优先级:13级,仅高于逗号和赋值运算符的优先级结合方向:从右至左,当有条件运算符嵌套时,按照从右至左的顺序依次运算。例:inta=1,b=2,x;则条件运算表达式:ab?(x=6):(x=7)的值是?对运算对象的要求:可以是任何类型的表达式,2019/11/24,20,条件运算符,程序3.5条件运算示例#include#includeintmain()inta=rand()%10,b=rand()%10,c,d;c=ab?a:b;d=aa=a*(b+5),2019/11/24,22,赋值与复合赋值运算符,程序3.6赋值及复合赋值示例#includeintmain()inta,b,c;a=b=c=7;/相当于c=7;b=c;a=bc+=a+;/相当于c=c+a;a+;printf(a=%d,c=%dn,a,c);c%=+a;/相当于+a;c=c%a;printf(a=%d,c=%dn,a,c);c*=a-;/相当于c=c*a;a-;printf(a=%d,c=%dn,a,c);return0;,a=8,c=14a=9,c=5a=8,c=45,2019/11/24,23,逗号运算符,逗号不仅是C语言源程序中的一种分隔符,还是一种运算符。逗号表达式的形式:表达式1,表达式2,,表达式n运算对象:可以是任何类型的表达式计算方法及运算结果:按从左到右的顺序依次计算各表达式的值,最后一个表达式n的结果就是整个逗号表达式的结果.优先级:15级,优先级最低,通常通过加括号提升其优先级结合方向:从左至右例:设所有变量均为int型,计算x=a=3,6*a和x=(a=3,6*a),这是一个逗号表达式,先计算赋值表达式x=a=3,该表达式的结果为x,变量x和a的值均为3,再计算第二个表达式6*a结果为18,因此逗号表达式最后结果为18,这是一个赋值表达式,先计算圆括号内逗号表达a=3,6*a,该表达式的结果为18,再将该结果赋值给变量x,因此赋值表达式最后结果为18,变量a的值为3,x的值为18,2019/11/24,24,内部类型转换,不同类型进行混合运算需要先转换为同一种类型再计算,这个类型称为目标类型。C语言提供了3种方式的类型转换。(1)不同类型数据混合运算时,由编译器自动完成隐式类型转换float转为double短存储型转为长存储型有符号数据转为无符号数据整型转为浮点型(2)强制性数据类型转换:根据用户需要用语句进行转换,形式(目标类型名)待转换表达式例:inta=(int)3.14;/a=3(float)a/4=3.0/4结果为0.75(float)(a/4)=3/4结果为0,然后float(0),结果0.0变量a的类型仍为int型。强制类型转换不会改变变量原类型,这也是C语言中的单目运算符,第2优先级,2019/11/24,25,内部类型转换,(3)赋值时的数据类型自动转换:赋值号右边表达式类型转换为左边变量的类型,原则:float或double型数据赋值给int型变量:直接截断小数int或char型数据赋值给double或float型变量:补足有效位成为一个浮点数char型数据赋值给整型家族的变量:将其ASCII码值赋给最低的一个字节,高字节全补0long或int型数据赋值给shortint型变量:取其低两字节赋值,高字节舍去shortint型数据赋值给int或long型变量:数据直接赋给低两字节,如果原shortint值的最高位为0,则结果的高16位全部补0;否则全部补1,这叫做符号扩展。unsignedint型数据赋值给int型变量:直接传送数值。非unsigned型数据赋值给位数相同的unsigned型变量:直接传送数值。,2019/11/24,26,本章小结,本章介绍了C语言34个运算符中的28个,运算符和运算对象一起构成了表达式,对每种运算符,重点掌握以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年本科《传感器与测试技术》期末试题及答案
- 安顺市2025-2026学年八年级上学期语文期中模拟试卷
- 中国专家共识解读:成人颅脑损伤院前急诊诊治指南(2025版)
- 活蚕沟站区车辆工队2025年第二季度每日一题
- 社区消防知识培训课件演讲稿
- 河南省洛阳市偃师区2024-2025学年四年级下学期期末质量检测英语试题
- 社区村镇工作基础知识培训课件
- 农牧机械出租合同范本
- 股权出让协议合同范本
- 公司劳务合同范本简单
- 2026高考英语 写作-倡议信 复习课件
- 2025广东广州市从化区社区专职人员招聘33人笔试参考题库附答案解析
- 建材买卖(橱柜订购类)合同协议书范本
- 2025年小学英语教师业务理论考试试题及答案
- 托管老师岗前培训
- (正式版)HGT 6313-2024 化工园区智慧化评价导则
- 环境污染刑事案件司法解释学习课件
- 信息技术教学德育融合
- 护理品管圈QCC之提高手术物品清点规范执行率
- 高尔夫基础培训ppt课件
- 暴雨产流计算(推理公式_四川省)
评论
0/150
提交评论