




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
教学内容: 4.1 数据运算的基本概念 4.2 算术运算 4.3 赋值运算 4.4 关系运算 4.5 逻辑运算 4.6 自增自减运算 4.7 其它运算 教学要求: 1.掌握各种运算符的优先级、结合方向。 2.掌握各种数据运算的运算符的运算。 3.掌握混合运算时的类型转换规则。 第 4 章 数 据 运 算 4.1 数据运算的基本概念 1. 运算符 C语言具有丰富的运算符。 Turbo C 提供了44种数 据操作运算符,其使用范围很宽。 运算符是一种向编译程序说明特定的运算或操作的 符号。每一种运算符都具有特定的数据操作规则。 2. 运算符的分类 (1)按运算符要求运算对象的个数分类:单目运算 符、双目运算符、三目运算符。 (2)按其数据操作功能分类:算术运算符、关系运 算符、逻辑运算符、位运算符、C的特殊运算符 。 3.运算符的优先级 当一个表达式中出现多个运算符时,表达式的求值运 算按运算符的优先级别从高到低的顺序执行。在C语言中 ,将44种运算符的优先级从高到低共分为15个等级。如 表4.1所示。 4.运算符的结合性 (1)运算符的左结合性:当一个操作数两侧的运算符具 有相同的优先级时,操作数先与左边的运算符结合,即 自左至右的结合方向。 (2)运算符的右结合性: 即自右至左的结合方向。 除单目运算符、赋值运算符和三项条件运算符是右结合 性外,其它运算符都是左结合性。 初等运算符 ( )、 、 单目运算符 !、+ +、 、+ 、 、(类型) 算术运算符 、/ 、% ,+、 关系运算符 、= ,= =、! = 逻辑运算符 float x,y,z; a=85; b=18; x=42.6; y=28.3; c1=a/b * 9 +a %b; z=x/y(x+y)/2 1; printf(“c1=%dn“,c1); printf(“z1=%fn“, z); 程序运行结果: c1=49 z1=39.172222 a/b的值是4, 4乘9得36, a%b的值13 36+13得49 混合运算中数据类型的转换: 6.数据类型转换 1)横向向左的箭头 ,表示必须的转换。 char和short 型必须转 换成 int 型,float型必 须转换成double型。 2)纵向向上的箭头 ,表示不同类型的转换 方向。 (1)整型、实型和字符型数据间可以混合运算 (因为字符数据与整型数据可以通用)。 一个运算符两侧的操作数的数据类型不同,则按 “先转换、后运算”的原则,首先将数据自动转换成同 一类型,然后进行运算。 例如, int 型与 double 型数据进行混合运算,则先将 int 型数据转换成 double 型,然后在两个同类型的数 据间进行运算,结果为double型。 注意箭头方向只表示数据类型由低向高转换. 例4.2整型、实型数据间混合运算 #include main() int a; float x; a=35; x=42.63; printf(“%fn“,a+x); printf(“%fn“,x/a); 程序运行结果: 77.630001 1.218000 自动将X的数据转换成 double 型,再将 int 型变 量a数据转换成 double 型,进行加法运算,运算 结果为double型 7.数据类型强制转换 数据类型允许强制转换,一般格式为: (数据类型)(表达式) 例如: (int)(x + y) /*将 x+y 的结果转换成 int 型*/ (1)当被转换的表达式是一个简单表达式时,外面 的一对圆括号可以缺省。 例如: (double)a /*将变量a的值转换成double型*/ (float)5/2 (等价于(float)(5)/2) /*将5转换成实型再除以2(=2.5)*/ (float)(5/2) /*将5整除2的结果:2,转换成实型数:2.0*/ (2)强制转换类型得到的是一个所需类型的中间量,原 表达式类型并不发生变化。 例如,(double)a 只是将变量a的值转换成一个double型的中间量,其数 据类型并未转换成double型。 例4.3 数据类型强制转换 #include main() int a; float x,y; a=85; x=42.6; y=19.3; printf(“1-%ft“, (float)5/2 ); printf(“2-%fn“, (float)(5/2); printf(“3-%dt“, (int)(x + y) ); printf(“4-%fn“, (double)a ); 程序运行结果: 1-2.500000 2-2.000000 3-61 4-85.000000 4.3 赋 值 运 算 1.赋值运算 赋值运算符: “ = ” ,它的作用是将一个表达式的 值赋给一个变量。 给变量赋值的一般形式为:变量 = 表达式 2赋值运算符的优先级 赋值赋值 运算符的优优先级级低于算术术运算符,也低于 关系运算符和逻辑逻辑 运算符。 3赋值运算结合方向 赋值赋值 运算结结合方向:自右向左结结合。 4.赋值表达式 由赋值运算符或复合赋值运算符,将一个变量和一个 表达式连接起来的表达式,称为赋值表达式。 (1)赋值表达式一般格式 变量 赋值运算符 表达式 例如, a = 5 、 b=x+3*y (2)赋值表达式的值 任何一个表达式都有一个值,赋值表达式也不例外。 被赋值变量的值,就是赋值表达式的值。 例如,a = 5 赋值表达式,变量a的值是 赋值表达式的值是 。 例如,int x; float y; x = 5 y = (float)5 / 2 如果表达式值的类型,与被赋值变量的类型不一 致,但都是数值型或字符型时,系统自动地将表达式 的值转换成被赋值变量的数据类型,然后再赋值给变 量。 表达式 x = 5 的值: 5 变量 x 的值: 5 表达式 y = (float)5 / 2 的值: 2 .5 变量 y 的值: 2 .5 (3)赋值运算结合方向:右左 例如: x = y = 65 等价于 x = ( y = 65 ) 操作数 y 是先与右边的运算符结合,即 先将 65 赋值给变量 y 变量 y 的值是 65 表达式 y = 65 的值是 65 再做左边赋值运算,即 将表达式 y = 65的值65, 赋值给变量 x 变量 x 的值是 65 表达式 x = y = 65 的值是 65 5.复合赋值运算 复合赋值运算符:是由赋值运算符之前再加一个双 目运算符构成的。 (1)复合赋值运算的一般格式为: 变量 双 目 运 算 符 = 表达式 复合赋值运算符 它等价于: 变量 = 变量 双目运算符 (表达式) 例如: y *= x + 6 等价于 y=y * (x+6) 不是 y=y * x+6 当表达式为简单表达式时,表达式外的一对圆括号 才可缺省,否则可能出错。 例如: x+=a 等价于 x=x + a x/=3 等价于 x=x/3 (2) 10种复合赋值运算符 C语言规定的10种复合赋值运算符如下: 复合算术运算符: += -= *= /= %= 复合位运算符: x=10; y=3; m= 24; m/= x 4 ; printf(“%dn” ,m); printf(“%fn”,(float)x/y); x=1; y*=x+2; printf(“%d-%dn”, x/y, x%y); 运行结果: 4 3.333333 0-1 m = m / (x 4) ; 4.4 关 系 运 算 1.关系运算符及其优先次序 (1) 关系运算符(6种关系运算符) (大于) = (大于或等于) = (等于) != (不等于) 注意:在语言中,“等于”关系运算符是双等号 “=”,而不是单等号“= ”(赋值运算符)。 例如: a=18 该表达式是赋值表达式 a=18 该表达式是关系表达式 (变量a是否等于18) (2)关系运算符优先级与结合方向 在关系运算符中: = 4个优先级相同; = != 2个也相同,且前4个高于后2个。 结合方向是“自左至右”。 (3) 关系运算符与其它运算符 关系运算符的优先级低于算术运算符; 关系运算符的优先级高于赋值运算符 。 3种运算符优先级从高到低为: 算术运算符 关系运算符 赋值运算符 2. 关系表达式 (1) 关系表达式 关系表达式是指,用关系运算符将两个表达式连 接起来,进行关系运算的式子。 例如,下面的关系表达式都是合法的: ab, a+bc-d, (a=3)=b, (ab)=(bc) (2) 关系表达式的值 语言中没有逻辑型数据。在语言中: 当关系表达式表示的含意为“逻辑真” ,其值为 1; 当关系表达式表示的含意为“逻辑假” ,其值为。 例如,假设n1=3,n2=4,n3=5,则: n1n2 表达式的值:0。 (n1n2)!=n3 表达式的值:1。 n1=1 n=0) a=25.28; b=52.78; !a 表达式的值: 0 !(A) 表达式的值: 0 a11.564 temp= a+6b /* temp=0*/ printf(“a+6b temp=!a+b*c-b/a /* temp=1 */ printf(“!a+b*c-b/a 4.6 自 增 自 减 运 算 1. 自增(+)、自减(-)运算 自增运算使单个变量的值增, 自减运算使单个变量的值减。 2.用法与运算规则 (1)前置运算运算符放在变量之前:变量、 变量,先使变量的值增(或减),然后再以变化后的值 参与其它运算,即先增、减, 后运算。 (2)后置运算运算符放在变量之后:变量、变 量,变量先参与其它运算,然后再使变量的值增(或 减),即先运算,后增、减。 (3)结合方向:右左 3.自增、自减运算说明 (1)自增、自减运算符,不能用于常量和表达 式。 例如,5+、-(a+b) 等都是非法的。 (2)自增、自减运算,常用于循环语句中,使 循环控制变量加(或减),以及指针变量中,使指 针指向下(或上)一个地址。 (3)在表达式中,连续使同一变量进行自增或 自减运算时,很容易出错,所以最好避免这种用法。 例如:a+a+a+b 例4.6 求下列表达式的值 设 int a, b; a=3; b=4; (1) +a + b+ 变量a: 4 , 表达式值:8 , 变量b: 5 (2) a+a+a 等价于 (a+)+(a+)+a 表达式值: 9 , 变量a: 5 (3) a + (+a) + (+a) 变量a: 5 , 表达式值: 15 二级考题:a+=a-=a*a 例4.7 自增自减运算符的用法与运算规则示例 main() int x=6, y; printf(“x=%dn“,x); /*输出x的初值*/ y =+x; /*前置运算*/ printf(“y=+x: x=%d,y=%dn“,x,y); y = x + ; /*后置运算*/ printf(“y=x+: x=%d,y=%dn“,x,y); 程序运行结果: x=6 y=+x: x=7,y=7 y=x-: x=8, y=7 1. 条件运算符 : ? : 2条件表达式一般格式: 表达式1 ? 表达式2 : 表达式3 条件表达式中的“表达式1”、“表达式2”、“ 表达式3”的类型,可以各不相同。 int x, y,a,b; char c ; x=56; y=34; a=23; b=32; xy ? C=# : x=a+b 4.7 其 它 运 算 3条件运算规则 : 如果“表达式1”的值为非0值(即逻辑真),运算结 果等于“表达式2”的值;否则,运算结果等于“表达式 3”的值。 4条件运算符优先级与结合性 条件运算符的优先级,高于赋值运算符,但低于关 系运算符和算术运算符。 其结合性为“从右到左”。 例如: xy ? x+y : ab ? a *b :a+b 等价于: xy ? x+y : (ab ? a - b :a+b) 设 x=5 y=8 a=34 b=12 表达式的值:22 例4.8从键盘上输入一个字符,如果它是大写字 母,则把它转换成小写字母输出;否则,直接输出。 main() char ch; printf(“Input a character: “); scanf(“%c“, ch=(ch=A printf(“ch=%cn“,ch); 4. 逗号运算符(,)及其表达式 c 语言提供一种用逗号运算符“ ,”连接起来的式子 ,称为逗号表达式。 逗号运算符又称顺序求值运算符。 (1) 一般形式 表达式, 表达式, , 表达式n (2) 求解过程 自左至右,依次计算各表达式的值,最后一个表达 式的值即为整个逗号表达式的值。 (1)逗号表达式: a = 3 * 5, a * 4 的值 先求解a = 3 * 5,得a=15; 再求a * 4 = 60,所以逗号表达式的值为:60。 (2)逗号表达式 (a = 3 * 5, a * 4), a + 5 的值 先求解a = 3 * 5,得a=15; 再求a * 4=60; 最后求解 a + 5=20,所以逗号表达式的值为: 20。 注意:并不是任何地方出现的逗号,都是逗号运算符。 很多情况下,逗号仅用作分隔符。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河源公务面试题及答案
- 干部选聘笔试题及答案
- 输尿管肿瘤考试题及答案
- 2025年广西玉林师范学院招聘考试笔试试题(含答案)
- 国家基本公共卫生服务项目乡村医生疾控包培训课前试题(附答案)
- 2025年施工员之土建施工基础知识通关考试题库带答案解析
- 药物警戒相关法规考试试题及答案
- 功能性子宫出血的护理试题(附答案)
- 2025年医保知识考试试题库及答案
- 2024年建筑工程《地基与复合地基静荷载试验》检测知识考试题库与答案
- GB/T 23445-2009聚合物水泥防水涂料
- 职业史证明【模板】
- 文旅亲子研学基地运营合作协议
- 提高妇科手术患者术后康复相关知识知晓率妇科品管圈
- GB∕T 6818-2019 工业用辛醇(2-乙基己醇)
- 钻具内防喷工具课件
- 新版(七步法案例)PFMEA
- TCECS 20007-2021 城镇污水处理厂污泥厌氧消化工艺设计与运行管理指南
- 产品物料变更申请单
- 课堂教学技能——板书技能(ppt)
- SF_T 0097-2021 医疗损害司法鉴定指南_(高清版)
评论
0/150
提交评论