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

下载本文档

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

文档简介

北京邮电大学出版社 第3章运算符和表达式 3 1表达式3 2算术运算符3 3赋值运算符3 4不同数据类型数据间的混合运算3 5自增 自减运算符3 6逗号运算符3 7其它运算符本章小结习题参考答案 北京邮电大学出版社 3 1表达式 一 表达式表达式是由运算对象 运算符按照C语言的语法规则构成的符号序列 表达式可以通过运算产生一个结果或完成某种操作 C语言的表达式功能很强 也很复杂 它提供了许多种运算符 北京邮电大学出版社 3 1表达式 二 运算符运算符是C语言里用于描述对数据进行运算的特殊符号 C语言有三大运算符 算术 关系与逻辑 位操作 北京邮电大学出版社 3 1表达式 三 运算符和表达式的分类1 运算符的分类 按在表达式中与运算对象的关系 所需要运算对象的个数 可以分为 单目运算符双目运算符三目运算符 北京邮电大学出版社 3 1表达式 按它们在表达式中所起的作用又可以分为 算术运算符 赋值运算符 自增自减运算符 关系运算符 逻辑运算符 条件运算符 位运算符 逗号运算符 其它运算符 类型名 sizeof 北京邮电大学出版社 3 1表达式 2 表达式的分类 按照运算符要求运算对象的个数可以分为 单目表达式双目表达式三目表达式 按照运算符在表达式中的作用 可以分为 算术表达式赋值表达式自增 自减表达式关系表达式逻辑表达式逗号表达式 北京邮电大学出版社 3 1表达式 四 优先级和结合性优先级指同一个表达式中不同运算符进行运算时的优先次序 结合性是针对同一优先级的多个运算符而言的 它是指同一个表达式中相同优先级的多个运算是自左向右进行运算还是自右向左进行运算 关于C语言运算符的含义 类型 优先级 结合性等问题见附录B 北京邮电大学出版社 3 2算术运算符 一 算术运算符 加法运算符 减法运算符 乘法运算符 除法运算符当运算对象均为整数时运算结果也为整数 求余运算符 模运算符 要求 两侧运算对象均为整型数据 算术运算符均为双目运算符 均具有左结合性 的优先级为3级 的优先级为4级 北京邮电大学出版社 3 2算术运算符 二 算术表达式算术表达式是用算术运算符和括号将运算对象连接起来的 符合C语言的语法规则的式子 使用算术表达式时应注意 1 当双目算术运算符两侧运算对象的类型一致时 运算结果的类型与运算对象的类型相同 如果类型不一致 系统将自动按规律先将运算对象转换为同一类型 然后再进行运算 2 可以用括号改变表达式的运算顺序 左右括号必须配对 多层括号都用小括号 表示 3 注意算术表达式的书写形式 不要写成代数式的形式 北京邮电大学出版社 3 3赋值运算符 一 普通赋值运算符1 赋值运算符赋值符号 就是赋值运算符 其功能是将赋值运算符 右侧表达式的值求出并将结果赋值给 左侧的变量 赋值运算符的优先级很低 仅高于逗号运算符 为右结合性 北京邮电大学出版社 3 3赋值运算符 2 赋值表达式用赋值运算符将一个变量和一个表达式连接起来的符合C语言语法的式子称做赋值表达式 它的一般形式为 变量名 表达式赋值表达式的结果是赋值号右侧的表达式的值 求解赋值表达式时 如果赋值运算符两侧的数据类型不一致 赋值时要进行类型转换 转换的原则是将右侧的表达式的值转换为左侧变量的类型再进行对左侧变量赋值 北京邮电大学出版社 3 3赋值运算符 二 复合赋值运算符在赋值运算符 之前加上其它一些双目运算符可以构成复合赋值运算符 用于完成运算 赋值组合操作 C语言中复合赋值运算符的一般形式为 运算符 其中 运算符 可以是 所构成的复合赋值运算符是 所有的赋值运算符包括复合赋值运算符的优先级全部相同 均为右结合性 北京邮电大学出版社 3 3赋值运算符 由复合赋值运算符将一个变量和一个表达式连接起来的式子称为复合赋值表达式 它的一般形式为 变量名复合赋值运算符表达式复合赋值表达式的作用等价于 变量名 变量名运算符 表达式 即先将变量和表达式进行复合赋值运算符所指定的运算 然后将运算结果赋给变量 复合赋值表达式的值就是复合赋值运算符左侧变量被赋值以后的值 北京邮电大学出版社 3 4不同数据类型数据间的混合运算 一 自动类型转换整型 实型 字符型数据间可以混合进行算术运算 进行运算时 参与运算的操作数的数据类型要一致 若参与运算的数据类型不同 先要将其转换为相同的类型 然后再进行运算 北京邮电大学出版社 3 4不同数据类型数据间的混合运算 一 自动类型转换横向箭头表示必须的转换 纵向箭头表示当运算符两侧的运算对象为不同类型时的转换 这些转换都是由系统自动进行的 北京邮电大学出版社 3 4不同数据类型数据间的混合运算 二 强制类型转换强制类型转换是通过类型转换运算来实现的 其一般形式为 类型说明符 表达式 类型说明符 是类型转换运算符 单目运算 优先级别为2级 具右结合性 在类型转换运算符的右侧跟上表达式形成类型转换表达式 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型 北京邮电大学出版社 3 4不同数据类型数据间的混合运算 三 强制类型转换 赋值表达式的类型转换当赋值运算符两侧的运算对象数据类型不同时 系统也将进行自动类型转换 转换规则为 将赋值运算符右侧表达式的类型转换为左侧变量的类型 北京邮电大学出版社 3 4不同数据类型数据间的混合运算 1 浮点型与整型相互转换将浮点数据 包括单 双精度 转换为整型时 将舍弃浮点数的小数部分 只保留整数部分 2 单 双精度浮点型相互转换由于C语言中的浮点值总是用双精度表示的 所以float型数据只是在尾部加0延长为double型数据参加运算 然后直接赋值 double型数据转换为float型时 先截取双精度实数的前7位有效数字 然后再赋给单精度类型的变量 3 字符型与整型相互转换将整型数据赋给字符型变量时 由于整型数据用两个字节存放 而字符型数据用一个字节存放 所以只保留其低8位赋给字符型变量 高位部分舍弃 字符型数据赋给整型变量时 将字符数据的8位放入整型变量的低8位中 有些编译系统在整型变量的高8位补0 而有些编译系统 如TurboC 根据字符的最高位为0或1将高8位全部补0或补1 北京邮电大学出版社 3 4不同数据类型数据间的混合运算 4 整型与长整型相互转换长整型数据赋值给整型变量时 将低16位值送给整型变量 将高16位截断舍弃 将整型数据赋值给长整型变量时 将整型数据的16位送到长整型变量的低16位中 根据整型数据符号位为0或1 在长整型的高16位全部补0或1 以保持数值不改变 5 无符号整数与有符号整数相互转换若占据同样长度存储单元的有符号 无符号整型相互转换时 是原样赋值 内部的存储方式不变 但外部值可能改变 若占据不同长度存储单元的有符号 无符号整型之间转换 先参照 4 中所述方式进行转换 再按上面字节数相同的方式直接赋值 北京邮电大学出版社 3 5自增 自减运算符 一 自增自减运算符 表达式 自增运算符 使变量的值增加1 自减运算符 使变量的值减少1 自增 自减运算符均为单目运算符 优先级为2 具右结合性 北京邮电大学出版社 3 5自增 自减运算符 一 自增自减运算符 表达式自增 自减运算符都有两种用法 前置运算将 或 运算符置于变量之前 一般形式为 变量 变量 其功能是使变量的值增 减 然后再以变化后的变量值参与其它运算 即先增减 后运算 后置运算将 或 运算符置于变量之后 一般形式为 变量 变量 其功能是变量先参与其它运算 然后再使变量的值增 减 即先运算 后增减 北京邮电大学出版社 3 5自增 自减运算符 二 关于自增自减运算符 表达式的说明自增 自减运算符实际上属于赋值运算符 不能应用于常量和表达式 操作对象只能是变量 一般自增自减表达式或是以表达式语句的形式出现 或是出现在for循环语句中使循环控制变量加 减 或应用于指针变量 使指针指向下 上 一个地址 其它将自增自减表达式应用于另一个表达式内部的形式 在尚未熟练掌握时尽量不去使用 最好不要使用诸如i j i i 此类容易产生歧义或错误的形式 北京邮电大学出版社 3 6逗号运算符 逗号运算符就是用逗号 作为操作符 它可以把多个表达式连接起来形成逗号表达式 逗号运算符又称顺序求值运算符 逗号运算符为双目运算 其优先级别是C中所有运算符中最低的 具左结合性 逗号表达式扩展为n元运算的形式 表达式 表达式 表达式n逗号表达式的求值过程是自左向右 依次计算各子表达式的值 最右侧子表达式 表达式n 的值即为整个逗号表达式的值 北京邮电大学出版社 3 7其它运算符 sizeof的使用形式比较像是函数调用 但它是一种运算符 其一般应用形式为 sizeof 运算对象 sizeof运算的功能是求出运算对象在计算机的内存中所占用的字节数 其中运算对象可以是数据类型说明符或表达式 当运算对象是表达式时括号可省略 sizeof是单目运算符 优先级别为2 具右结合性 运算的结果是整型 北京邮电大学出版社 本章小结 本章主要介绍了运算符与表达式 其中涉及到的重要概念有 运算对象的个数 运算优先级 结合性 类型转换等 运算符是C语言里用于描述对数据进行运算的特殊符号 表达式是由运算符连接常量 变量 函数所组成的式子 每个表达式都有一个值和类型 表达式求值按运算符的优先级和结合性所规定的顺序进行 1 运算符优先级和结合性一般而言 单目运算符优先级较高 赋值运算符优先级较低 算术运算符优先级较高 关系和逻辑运算符优先级较低 多数运算符具有左结合性 而单目运算符 三目运算符 赋值运算符具有右结合性 北京邮电大学出版社 本章小结 2 算术运算符 1 整数相除是做整除 结果也为整数 2 求余运算要求运算对象均为整型 3 注意运算时的类型转换问题 4 注意C语言表达式与数学公式在形式上的差异3 赋值运算符 1 赋值表达式的左边必须为变量 2 复合赋值运算符的优先级全部在同一级别 3 注意赋值时的类型转换 北京邮电大学出版社 本章小结 4 类型转换 1 自动转换 在不同类型数据的混合运算中 由系统自动实现转换 由少字节类型向多字节类型转换 2 强制转换 由强制转换运算符完成转换 3 赋值时的类型转换 不同类型的量相互赋值时也由系统自动进行转换 把赋值号右边的类型转换为左边变量的类型 4 无论是系统所做的自动类型转换还是强制类型转换 都只是将常量 变量 表达式的值进行转换去参与运算 不会改变变量的数据类型和值 北京邮电大学出版社 本章小结 5 自增 自减运算符 1 自增 自减其实也是赋值运算 只能针对变量做自增 自减运算 2 注

温馨提示

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

最新文档

评论

0/150

提交评论