c语言程序设计与项目实践课程.ppt_第1页
c语言程序设计与项目实践课程.ppt_第2页
c语言程序设计与项目实践课程.ppt_第3页
c语言程序设计与项目实践课程.ppt_第4页
c语言程序设计与项目实践课程.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

第3章运算符和表达式 本章的学习重点 运算符与表达式的分类 算术运算符与算术表达式 逻辑运算符与逻辑表达式 关系运算符与关系表达式 位运算符 条件运算符 强制类型转换 3 1运算符与表达式的分类 运算符的分类 可按照操作对象数目分类 例如一元运算符 二元运算符和三元运算符等 也可按照功能分类 例如算术运算符 逻辑运算符 关系运算符等 表达式的分类 主要按照运算符的不同功能进行分类 例如算术表达式 逻辑表达式 关系表达式等 3 1 1运算符的分类 按照操作对象的多少 运算符主要可分为一元运算符 二元运算符和三元运算符 例如负号 为一元运算符 加号 为二元运算符等 除了这些基本运算符之外 C语言还支持复合运算符以及sizeof运算符等 按照功能分类 运算符可分为 算术运算符 赋值运算符 逻辑运算符 关系运算符 条件运算符 位运算符 取字节数运算符等 3 1 1运算符的分类 表3 1运算符分类 3 1 2表达式的分类 表达式是一种有值的语法结构 它一般由运算符将变量 常量或函数返回值结合而成 表达式按照运算符的不同进行分类 主要有 算术表达式 逻辑表达式和关系表达式等 1 算术表达式一般由算术运算符和控制运算优先级的括号连接而成 例如 3 14159 r a b c d m 其中 符号 表示算术运算 乘 表示算术运算 除 2 赋值表达式一般由赋值运算符 算术运算符和操作对象组合而成 一般表达形式为 变量 表达式或数值或者变量1 变量2 变量3 表达式或数值 3 1 2表达式的分类 3 逻辑表达式一般由逻辑运算符和操作对象组合而成 例如 a b c d m x等 4 关系表达式一般由关系运算符和操作对象组合而成 例如 a b c d m n等 5 逗号表达式逗号表达式由其他表达式和逗号运算符组成 例如 a 12 b 100 c a b6 复合表达式复合表达式是几种简单表达式的组合 是比较复杂的表达式 例如 num 12 b c 35 d 7 3 2运算符的优先级与结合性 当不同的运算符放在一个表达式中进行混合运算时 运算顺序是根据运算符的优先级而定的 优先级高的运算符先运算 优先级低的运算符后运算 在同一表达式中 如果各运算符有相同的优先级 运算顺序是从左向右 还是从右向左 是由运算符的结合性决定的 所谓结合性是指运算符可以和左边的表达式结合 也可以和右边的表达式结合 3 2运算符的优先级与结合性 表3 2运算符优先级与结合性 3 2运算符的优先级与结合性 范例3 1PriorityAndCombine c这里使用多运算符的表达式演示不同优先级的运算符组合运算所产生的结果 程序定义变量a b c 并使用复合赋值运算符 验证复合赋值运算符的功能 分析 查看代码 由于赋值是自右至左的右结合性 因此先计算赋值号右边的表达式a c 10 结果为210 然后将结果赋给b 3 3赋值运算符与赋值表达式 C语言规定 任何变量都要先定义后使用 并且在引用其数值前一定要进行赋值操作 而此时就需要用到赋值运算符 1 简单赋值表达式赋值表达式使用赋值号表示 赋值号左边的对象叫做左值 l value 赋值号左边只能是变量 a 5等价于a a 5若a 20 执行后a 5后 a的值变为25 3 3赋值运算符与赋值表达式 范例3 2 LvalueAndRvalue c 将int型变量的值赋给short型变量 查看赋值后的结果 为表述方便 程序使用十六进制值0 x12345 接收变量为short型 2 连续赋值表达式有时需要对几个变量赋予同一个值 这时可以使用连续赋值表达式 例如 inti j k i j k 10 由于赋值运算符是右结合性 因此程序执行顺序为 k 10j ki j 3 3赋值运算符与赋值表达式 3 复合赋值表达式复合赋值表达式由赋值运算符 算术运算符或逻辑运算符以及操作对象构成 例如 表达式a 10 它等价于 a a 10 范例3 3 DAssignmentOperator c 使用复合赋值运算符进行算术和赋值操作 程序使用 和 分别对变量m和n作赋值运算 验证在同一表达式中两者之间的关系 注意 在工程应用中 应尽量避免使用这些简化的复合赋值运算符 原因有两点 一是编码时容易出错 二是不便于其他程序员阅读 3 4算术运算符与算术表达式 C语言除了提供简单的加减乘除四则运算符外 还提供了模除 自增 和自减 等几种特殊的算术运算符 模除运算符 用于求两个整数相除的余数 自增 自减 运算符是C语言所特有的运算符 在工程中应用非常频繁 只能用于单个变量 3 4 1算术运算符与数据类型 C语言中 除运算符用 代替 乘运算符用 代替 并且 不能省略 如x y不能省略为xy 范例3 4 ComputeOperatorType c 程序使用输出函数printf验证两种不同数据类型进行算术除操作的结果 分析浮点型数据作算术运算的精度 C语言中 两个整型量作算术运算 其结果仍为整型 例如 算式 1 2的值取商中的整数部分0 注意 0不能作为除数 否则程序运行时将崩溃 3 4 1算术运算符与数据类型 实训3 1 计算圆柱体体积有一长为50cm 宽为30cm的长方形纸张 编写程序 计算将该纸张卷成圆筒时的体积 要求精确到小数点后6位 圆周率取3 141592 纸张卷成圆筒的方法有两种 一种是以长50cm作高 宽30cm作底 另一种是以宽30cm作高 长50cm作底 这里使用第二种方案 使用周长50cm计算半径r 实现语句 r 50 0 2 pi 根据数学公式 V S H 计算体积V pi r r h 其中h 30 采用数据类型double型以满足精度要求 3 4 2模除运算符 模除运算符 用于求两个整数相除的余数 模除运算只能用于整数间求余运算 不可用于浮点数 并且0不能作为除数 例如 7 3结果为1 而7 5 5将使程序编译出错 C语言规定 两边都为正整数 结果为正整数或零 两边都是负整数 结果为负整数数或零 左边的操作数是正整数 结果为正整数或零 左边的操作数是负整数 结果为负整数或零 例如 17 4 117 4 1 17 4 1 17 4 1 3 4 2模除运算符 范例3 4 Months2Year c 键盘输入总月数 使用 运算符和 运算符将输入的月数换算成年数和月数的形式 如25个月 表示2年零1个月 模除运算 例如m n 可以使用公式m m n n代替 例如算式中 17 4 可以使用算式 17 4 17 17 4 4 1注意 和 的区别 3 4 3自增自减运算符 自增 自减 运算符 只能用于变量 不能用于表达式或其他C语言对象 下面的操作均错误 b c m 1 范例3 5SelfAddSelfReduce c程序定义4个变量a b c d 对部分变量执行自增自减操作 验证左运算和右运算的区别 并进一步分析自增自减运算符与算术运算符的优先级 范例3 5SelfAddSelfReduce2 c定义变量a 分别执行单次和多次自增运算 输出结果 分析同一表达式中两次和三次自增操作中左运算和右运算的差别 3 5关系运算符与关系表达式 关系表达式的值 真 1 和假 0 例如 表达式10 3的值为1 即为真 而表达式 1 0的值为0 即为假 范例3 6RelationOperater c程序分析关系运算符的优先级 验证在同一表达式中有算术运算符和关系运算符时程序执行顺序 分析关系运算符的结合性 分析关系表达式的真和假 注意 判断两个对象是否相等 使用运算符 或 一定与赋值运算符 区分开来 3 6逻辑运算符与逻辑表达式 语言中提供了三种逻辑运算符 逻辑与 逻辑或 和逻辑非 前两种为双目运算符 具有左结合性 后一种为单目运算符 具有右结合性 逻辑表达式的值 真 1 和 假 0 两种 逻辑表达式中总是将0作为假 非0作为真 逻辑表达式的一般形式为 操作对象1逻辑运算符操作对象2 3 6 1逻辑与 逻辑与运算 参与运算的两个操作对象都为真 非0 时 结果为真 1 否则为假 0 例如 表达式 42 3 5 由于表达式0 2为假 因此便不再判断表达式3 5 而直接认为原表达式为假 0 范例3 7LogicAndOperater c程序分析逻辑与运算符的优先级与结合性 并分析逻辑与表达式执行过程中对两侧表达式执行顺序的影响 3 6 2逻辑或 逻辑或运算 参与运算的两个操作对象只要有一个为真 非0 结果即为真 1 否则为假 0 例如 表达式 4 10 3 0 表达式中 优先级低于关系运算符 和 所以表达式等价于 4 10 3 0 表达式 4 10为真 因此原表达式的结果为真 C语言规定 当运算符左边为真 非0 时 即判断表达式为真 1 而不再判断运算符右边是否为真或假 例如 表达式2 3 5 由于常量2为真 非0 因此便不再判断表达式3 5 而直接认为原表达式为真 1 范例3 8LogicOrOperater c程序分别设置逻辑与表达式和逻辑或表达式 在范例3 7基础上进一步分析逻辑与表达式的执行顺序 分析逻辑或的执行顺序 并与逻辑与表达式进行比较 分析产生的结果 3 6 3逻辑非 逻辑非运算 一元运算符 该运算符只能放在操作对象左边 当操作对象为真 非0 时 结果为假 0 操作对象为假 0 时 结果为真 范例3 LogicNoneOperator c程序分析逻辑非表达式的真和假 验证当变量a为非0时 a的含义 并分析复合逻辑运算时表达式的执行顺序与结果 实训3 2 判断闰年 CalculateLeapYear c年数中分为平年或闰年 编写程序 判断输入年数是闰年还是平年 闰年输出为1 平年输出为0 闰年判断公式 year 4 0 year 100 0 year 400 0 需求分析 需求1 输入年数需求2 使用逻辑运算符判断输入的年数是否为闰年 3 7位运算符 位运算 对操作对象中的比特位 bit 进行移位 重置以及逻辑判断等操作 位运算只能用于字符型 char 或整型 int short long等 不能用于float double void或其他复杂类表 位运算符 3 7位运算符 1 按位与 规则 每个操作对象对应位都为1时 结果才为1 否则为0 例如 3 5的计算方法为 先转化为二进制 然后按位进行与操作 00000011 00000101 结果为 00000001应用 按位与 主要用于将某个操作对象的某些位置零 例如 将int型变量 的第3 5 7 12位置零 方法为将a和二进制数1110111101011111作位与操作 表达式为 a 0 xEF5F 3 7位运算符 范例3 10LogicBitAnd c使用位 操作取变量a的低10bit位 其余位置零 并使用十六进制打印结果 方法为使变量a与另一常量作 该常量低10位为1 其余位为0 2 按位或 规则 有一个操作对象对应位为1时 结果即为1 当两个操作对象对应位都为为0时 结果才为 例如 3 5的计算方法为 先转化为二进制 然后按位进行或操作 00000011 00000101 结果为 00000111 3 7位运算符 3 按位异或 规则 操作对象对应位相同时为1 不同时为0 例如3 5的计算方法为 先转化为二进制 然后按位进行异或操作 00000011 00000101 结果为0 xF9 十进制数24911111001用途 按位异或 主要用于将操作对象的的某些位翻转 原来为1的位变为0 为0的变为1 其余各位不变 实训3 3 交换两变量的值 ExchangeTwoVariable c编写程序 不使用其他中间变量 交换两个整型变量a和b的值 使用按位异或 交换两变量的值 使用异或操作置位两变量对应位不同的位置 并依次交叉操作 达到两值交换的功能 本例主要使用一个变量存储了两个变量信息的特性 需求分析 需求1 交换两个变量的值需求2 不使用中间变量实现 使用按位异或 运算符 完成操作 方法为 首先将变量a和b作异或操作 将结果赋给a 然后将b与a作异或操作 并将结果赋给b 重复第一步操作 完成 3 7位运算符 4 按位取反 按位取反操作是将操作对象各位翻转 即原来为1的位变成0 原来为0的位变成1 例如 1111111100010011 0000000011101100用途 按位取反操作主要用于间接地构造一个数 以增强程序的可移植性 3 7位运算符 5 按位左移 操作使操作对象的各位右移 高位补0 低位舍弃 与左移类似 操作对象和右移位数只能是整型或字符型 3 8条件运算符 条件运算符 C语言中唯一一个三元运算符 三目运算符 其一般表达形式为 表达式1 表达式2 表达式3规则 若表达式1的值为真 非0 则表达式的值为表达式2 否则为表达式3 例如 a b a b a b当a 10 b 5 c 2时 该表达式的执行过程如下 首先计算表达式a b是否为真 经运算为真 因此 表达式的值为a b 即为15 实训3 4 分段函数计算 MulitPartFunction c键盘输入变量x的值 使用条件运算符判断函数y的值 并输出x和y的值 编写程序 实现分段函数 需求分析 需求

温馨提示

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

最新文档

评论

0/150

提交评论