已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机及程序设计概述 运算符与表达式 2 运算符 C语言用于描述对数据进行运算的特殊符号 语言具有丰富而繁多的运算符由运算符构成了各种表达式分类 语言的运算符按其在表达式中与运算对象的关系单目运算一个运算符连接一个运算对象双目运算一个运算符连接两个运算对象三目运算一个运算符连接三个运算对象 3 运算符 分类算术 自增 自减 运算符 关系运算符 赋值运算符 条件运算符 逗号运算符 指针运算符 强制类型转换运算符 type 分量运算符 和 下标运算符 函数调用运算符 4 运算符 对运算符的掌握应从三个方面着手和操作符相关的数据类型 包括操作数和操作结果的数据类型 运算符的优先级运算符的结合次序 5 表达式 用运算符将运算对象连接而成的符合 语言规则的算式特别地 一个常量 一个变量 一个函数都可以看成是一个表达式表达式的分类按照运算符与运算对象的关系单目表达式双目表达式三目表达式 6 表达式 表达式的分类按照运算符在表达式中的作用算术表达式 例 3 4 5赋值表达式 例 a 3关系表达式 例 5b逻辑表达式 例 3 5 a b条件表达式 例 a b a b逗号表达式 例 a 3 b 4 c 5指针表达式 例 p 2 a 7 表达式的求值过程 C语言规定了运算符的优先级和结合性优先级指同一个表达式中不同运算符进行计算时的先后次序结合性结合性是指同一个表达式中相同优先级的多个运算应遵循的运算顺序 语言规定 单目运算符是自右向左结合 双目运算符是自左向右结合 8 表达式的求值过程 表达式的求值过程按C规定的原则求值表达式代表了一个具体的值实际上是一个数据加工的过程在表达式求值时 先按运算符的优先级级别的高低次序执行如果运算符两侧的优先级级别相同 则按规定的 结合方向 处理提示运算符的优先级制约着表达式的计算次序可以通过括号 来改变表达式求值的顺序表达式求值过程中存在某种类型数据的类型转换 9 算术表达式 由算术运算符连接数值型运算对象构成其结果可以是整数 单精度实数和双精度实数例 inta 2 floatb 4 5 表达式2 a b的结果为8 5优先给与结合性提示两个整数相除其结果仍为整数 即舍去小数部分 例如 13 10的结果为1 为求余运算符 参与运算的两个数均为整数例如 10 3 1 10 3 1除以0在计算机系统中是没有意义的用括号可以改变表达式的运算顺序 10 算术表达式 算术表达式例1 设intb 7 floata 2 5 c 4 7 表达式a int b 3 int a c 2 4的值 例2 11 自增 自减 与 的作用是使变量的值增1或减1C语言提供两种形式的 运算符 a a 前缀运算 先进行增量运算后使用 a a 后缀运算 先使用后进行增量运算 提示 增和自减只能作用于变量 不允许对常量 表达式或其它进行操作当自增 自减变量值本身就单独构成一条语句时 前缀和后缀的效果是一样的对于 和 的使用要避免二义性 12 自增 自减 计算过程例1 设x 5y x 先计算x x 1 再执行y x 结果x 5 y 6 y x 先执行y x 再计算x x 1 结果y 5 x 6 问题 如何理解A B C规定 自左向右取尽可能多的符号组成运算符 13 自增 自减 例2 设x 5y x x 先取x的值进行 运算 再进行两次x y 25 x 7 y x x 先进行两次x自增 使x的值为7 再进行相乘运算 y 49 x 7 14 赋值表达式 由赋值运算符 连接表达式 右侧 和变量 左侧 形式 变量名 表达式赋值运算符完成两类操作计算赋值例inta 2 floatb 5 2 c c a b 赋值运算符具有右结合性例如 a b 3 5 先计算3 5 后将15赋给b 再将b的值15赋给a 15 赋值表达式 组合赋值表达式组合赋值运算符将一个变量和一个表达式连接起来的式子称为组合赋值表达式形式 变量名表达式例 x y 3 x x y 3 a b c a a b c 注意 a b c 与 a a b c 是不等价的提示 不是数学中的 等号 它表示一个动作 右侧的值送与左侧的变量中 左侧只允许是变量 不能是表达式或其他 赋值运算符两侧的类型要求一致 否则要进行类型转换赋值运算符 相等运算符 和一般习惯有所不同 16 关系表达式 关系运算符中的 关系 二字的含义是指一个值与另一个值之间的关系关系由关系运算符 OP表达式可以是常量 变量和表达式结果为整型值0 逻辑假1 逻辑真优先级 高于 结合方向 自左向右 17 关系表达式 例 inta 2 floatb 3 4 a b a b b a b b的结果分别是多少 0 1 0 提示进行关系运算时 先计算表达式的值 然后再进行关系比较运算例如 inta 1 b 2 c 3 1 a b 3 c的结果为0 3 9关系不成立 2 a b b 11 c 结果值为1 3 4关系成立 18 关系表达式 在表达式中连续使用关系运算符时 要注意正确表达含义例如 设 的取值范围为 10 10 时 不能写成 10 x 10 应写成 10 x x 10 为什么 19 逻辑表达式 逻辑 是指连接关系的方式由逻辑运算符 连接的表达式构成形式 OP表达式可以是常量 变量 或其他表达式其结果为整数值0 逻辑假 或1 逻辑真 优先级 最高 次之 最低逻辑运算优先级低于所有关系运算 优先级高于所有算术运算 单目运算 结合性 自左向右例如 a b b d 自右向左 例如 a 20 逻辑表达式 逻辑运算规则提示设计逻辑 与 运算 将最可能为 假 的表达式放在最左侧设计逻辑 或 运算 将最可能为 真 的表达式放在最左侧 21 逻辑表达式 例题 设inta 3 b 1 x 2 y 0 则 y b y a 的运算结果为1 问题 1 y b y a的运算结果是多少 2 两个表达式在运算次序是否一致 22 条件表达式 由条件运算符连接它的三个运算对象构成的表达式称之为条件表达式形式 条件运算符的 个 总是成对出现表达式可以是任何类型 结果也可以是任何类型运算过程计算表达式1的值为真 计算表达式2的值 并将表达式2的值作为整个条件表达式的结果 不再计算表达式3的值为假 计算表达式3的值 并将表达式3的值作为整个条件表达式的结果 不计算表达式2的值 23 条件表达式 优先级高于赋值运算 但低于所有关系运算 逻辑运算和算术运算结合性自右向左结合提示当多个条件表达式嵌套使用时 每个后续的 总与前面最近的 没有配对的 相联系例如 x y x z w z w等同于x y x z w z w 三个运算对象的类型可以不相同例如 x a 0 5 24 条件表达式 例题 设intx 10 y 9 inta b c a x y x y b x c y 执行上述程序段后a b c的结果是 分别为8 8 10 25 逗号表达式 由逗号连接符 与表达式构成形式 可以是任何类型逗号表达式的结果为最后一个表达式的结果值执行过程先求解表达式1的值 再求解表达式2的值 最后求解表达式n的值 并将表达式n的值作为整个表达式的结果值 26 逗号表达式 优先级级别最低 最后进行逗号运算 结合方向自左向右例题设intx a 表达式x a 4 6 2 的x值 表达式x a 4 6 2的x值 x为12 x为4 27 运算符与表达式 混合运算指在一个表达式中参与运算的对象不是相同的数据类型例如 设 inta 3 floatb 3 0 charc 3 则表达式 a c b 4 int b 2的结果 进行混合运算的首要的问题是对参与运算的数据进行类型转换类型转换由一种数据类型到另一种数据类型的转换被称为类型转换 28 隐式的 自动类型转换 如果同一个表达式中含有不同类型的常量和变量 C语言则在计算该表达式时会自动转换为同一种数据类型以便进行运算转换原则运算中将所有char型数据转换成int型 float型转换成double型 类型提升 低类型向高类型转换例如 1 5 2 a 1 2345678 运算次序为 2 a 先将 a 转换成整型数97 得乘积1941 5 194 1 5和194都转换成double型 和为95 5195 5 1 2345678 1 2345678本身应是double型的 所以最后结果也为double型 29 int char short unsigned long double float 低 高 类型提升 示意图 隐式的 自动类型转换 30 隐式的 自动类型转换 在数据输出时发生的类型转换同样要遵守 类型提升 的原则赋值运算中最终结果的类型 以赋值运算符左边变量的类型为准要将赋值符号右边表达式的值按左边变量的数据类型转换之后再赋值当左边变量的类型长度较右边值的长度短时 就可能产生误差 甚至完全错误提示由 语言的编译系统自动完成不会体现在 语言源程序中程序设计人员必须了解这种自动转换的规则及其结果 31 显式的 类型转换 显式的 类型转换通过用强制类型转换运算符 type 进行数据类型转换其含义是将右边表达式的值转换成括号中指定的数据类型转换形式如下 type 表达式type表示一个强制数据类型名表达式是任何一种类型的表达式例 int x y 注意与 int x y不同 32 简单表达式的运算 例1 执行下面程序段后 inta 1 b 1 c 1 a a b c printf d d d a b c 输出结果为 A 4 3 2 B 3 3 2 C 3 3 3 D 3 2 2 例2 若定义x y为double型 则表达式x 1 y x 3 2的值是 2 0 例3 若变量已经定义并赋值 下面符合C语言语法的表达式是 A a b 1B a b c 2C int18 5 3D a a 7 c b 例4 若a为int类型 且值为3 则执行完表达式a a a a后 a的值是多少 A 3B 9C 12D 6 例5 分析下列运算的结果 defineprintt x y z printf x d y d z d n x y z main intx y z x y z 2 x y 定义宏替换 输出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版无人驾驶汽车测试协议
- 二零二四年度LED路灯购销合同协议书3篇
- 二零二五年度餐饮行业营销推广服务合同3篇
- 2024版履约担保公司履约担保管理系统
- 2025年生态小区绿化水资源利用承包合同3篇
- 建筑碗扣支架出租合同(2025版)3篇
- 2024路演合同范本:路演活动应急预案合同3篇
- 二零二五年度环保科技水处理技术与应用合同3篇
- 二零二五版防盗门品牌加盟与区域经营合同3篇
- 2025年度旅游度假村麻石景观设计与施工合同4篇
- 化工园区危险品运输车辆停车场建设标准
- 氧气雾化吸入法
- 6月大学英语四级真题(CET4)及答案解析
- 气排球竞赛规则
- 电梯维修保养报价书模板
- 危险化学品目录2023
- FZ/T 81024-2022机织披风
- GB/T 33141-2016镁锂合金铸锭
- JJF 1069-2012 法定计量检定机构考核规范(培训讲稿)
- 综合管廊工程施工技术概述课件
- 公积金提取单身声明
评论
0/150
提交评论