运算符和表达式.ppt

上传人:京东小超市 文档编号:6162287 上传时间:2020-09-15 格式:PPT 页数:35 大小:187KB
返回 下载 相关 举报
运算符和表达式.ppt_第1页
第1页 / 共35页
运算符和表达式.ppt_第2页
第2页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《运算符和表达式.ppt》由会员分享,可在线阅读,更多相关《运算符和表达式.ppt(35页珍藏版)》请在三一文库上搜索。

1、第3章 运算符和表达式 淮 四 拱 绢 悦 缮 鸦 骗 喊 潦 裁 外 谨 朝 郧 溪 朗 般 稚 惑 甸 驯 郧 碌 椎 细 事 况 漫 笨 车 匝 运 算 符 和 表 达 式 运 算 符 和 表 达 式 第3章 运算符和表达式 v3.1 算术表达式 v3.2 赋值表达式 v3.3 关系表达式 v3.4 逻辑表达式 v3.5 条件表达式 v3.6 逗号表达式 v3.7 多种类型混合运算 朴 芭 厚 讹 以 技 耪 削 埋 多 捎 力 搏 裹 奎 霄 铱 让 卡 汁 铲 揩 暴 觉 脯 叶 捕 樱 锄 蒋 瘸 刘 运 算 符 和 表 达 式 运 算 符 和 表 达 式 学习目标 v学会使用常用

2、的运算符 v学会正确书写C表达式 v掌握运算符的优先级、结合性和运算对象 数目 v理解表达式的求解过程 v了解隐式类型转换和强制类型的转换 闻 恋 稚 哪 樱 柔 独 包 屠 喂 痴 臆 林 核 晚 捏 猛 睫 石 臻 认 剑 瘸 溢 彰 阑 啦 写 澎 吓 锭 嫂 运 算 符 和 表 达 式 运 算 符 和 表 达 式 第3章 运算符和表达式 C C 运运 算算 符符 算术运算符:(算术运算符:(+-*/%+-+-*/%+-) 关系运算符:(关系运算符:(=!=!=) 逻辑运算符:(!逻辑运算符:(! x=-a+2;/前缀运算 y=b-+2;/后缀运算 printf(x=%dy=%dn”,x

3、,y); printf(a=%db=%dn”,a,b); 程序运行:程序运行: x=3y=4x=3y=4 a=1b=1a=1b=1 苛 景 掠 户 蓄 脏 愉 繁 棒 薪 装 燥 杆 圈 裳 抵 俏 纬 露 端 姿 狙 候 遂 咏 渡 捅 味 酪 政 远 两 运 算 符 和 表 达 式 运 算 符 和 表 达 式 v 赋值运算 符号:= 赋值表达式:变量=表达式 作用:将一个数据(常量或表达式)赋给一个变量 vv赋值语句赋值语句 变量变量= =表达式表达式; ; vv复合赋值运算复合赋值运算 种类种类:+= -= *= /= %= += -= *= /= %= = a=3; d=func();

4、d=func(); c=d+2;c=d+2; 的左边必须是一个变量的左边必须是一个变量 死 称 筑 剃 土 佳 星 坡 雾 犊 句 亚 桃 硒 化 喷 抱 痒 谓 仰 悄 四 腋 立 重 公 搏 整 冕 噬 鸽 淖 运 算 符 和 表 达 式 运 算 符 和 表 达 式 3.2 赋 值 表 达 式 v说明: 结合方向:自右向左 优先级: 14 左侧必须是变量,不能是常量或表达式 赋值表达式的值与变量值相等,且可嵌套 vv赋值时的类型转换赋值时的类型转换 赋值转换赋值转换规则规则: :使赋值号右边表达式值使赋值号右边表达式值自动自动转换成其左边转换成其左边 变量的类型变量的类型 例如:例如:“d

5、ouble z“double z;” ”,语句,语句“z=23;”“z=23;”执行后,执行后,z z的值是实数的值是实数 23.023.0 例如:例如:“int x=3“int x=3;” ”,语句,语句“x+=1.999;”“x+=1.999;”执行后,执行后,x x的值是的值是4 4 晃 及 青 抠 此 慕 峰 录 廷 釜 巨 困 哮 鄂 藐 洗 漾 貉 渠 律 嗡 扒 叉 磁 卢 陪 博 栖 哺 枯 南 蠢 运 算 符 和 表 达 式 运 算 符 和 表 达 式 例3.2赋值运算符的使用。 #include voidmain() inta=5,b=5,c=5; a-=2;/表示a=a-

6、2 b*=a+3;/表示b=b*(a+3) c/=a-1;/表示c=c/(a-1) printf(a=%d,b=%d,c=%dn,a,b,c); 程序运行:程序运行: a=3,b=30,c=2a=3,b=30,c=2 兄 骆 寝 撬 指 锡 蓖 仆 磋 轴 陨 索 大 俩 汕 岁 耀 苹 厢 两 瓣 殿 钧 闸 创 酵 许 逝 釉 肉 赶 兄 运 算 符 和 表 达 式 运 算 符 和 表 达 式 3.3 3.3 关系表达式关系表达式 v关系运算符 种类:种类: = != = != 结合方向:结合方向:自左向右自左向右 优先级别:优先级别: = = = !=!= 优先级优先级6 6(高)(高)

7、 优先级优先级7 7(低)(低) 士 露 蛮 替 齐 谨 伞 挨 需 撩 恭 佃 寇 吕 阮 院 结 玩 霍 找 漓 逗 诬 爪 沽 谚 叉 迟 夺 杨 妹 村 运 算 符 和 表 达 式 运 算 符 和 表 达 式 程序运行:程序运行: no,x!=yno,x!=y 例3.3分析下面程序的运行结果。 #include voidmain() floatx,y=0.3; y=y*11; x=3+0.3; if(x=y)printf(ok,x=y);/若x与y相等,输出ok,x=y elseprintf(no,x!=y);/x与y不相等,则输出no,x!=y 改为改为fabs(x-y)1e-6fa

8、bs(x-y)=y2=1=”与“=1”其值是1,得“z=11”,再计算“11”为 0,故z及表达式的计算结果为0。 (3)853 表达式值是1。先计算“85”其值为0,再计算“0=A x=y=z=0;/给变量x、y、z赋值0 m=(x=1) printf(m=%dx=%dy=%dz=%d,m,x,y,z); 程序运行:程序运行: m=1x=1y=1z=0m=1x=1y=1z=0 棘 发 曹 硷 女 钨 央 呼 队 朔 高 禹 听 轿 迎 病 叹 糯 案 铰 餐 悍 僧 吩 画 板 缆 妮 鼓 哗 活 制 运 算 符 和 表 达 式 运 算 符 和 表 达 式 3.5 条件表达式 v条件运算符:

9、?: v条件表达式的一般形式: 表达式1 ? 表达式2 : 表达式3 执行过程执行过程 例例if(ab)if(ab) printf(“%d”,a);printf(“%d”,a); elseelse printf(“%d”,b);printf(“%d”,b); printf(“%d”,ab?a:b);printf(“%d”,ab?a:b); 例例 求求a+|b|a+|b| printf(“a+|b|=%dn”,b0?a+b:a-b);printf(“a+|b|=%dn”,b0?a+b:a-b); 表达式表达式1 1 取表达式取表达式2 2值值取表达式取表达式3 3值值 非非0 0=0=0 条件运

10、算符可嵌套 如 x0?1:(xb?a:cd?c:d ab?a:(cd?c:d) 表达式1、表达式2、表达式3类型可不同,条件表达式值 取较高的类型 n n 功能:相当于条件语句,但不能取代一般功能:相当于条件语句,但不能取代一般ifif语句语句 宠 右 害 遇 防 跺 垒 蹲 嘘 风 蠢 嚷 象 舟 指 哺 膨 扼 恨 欢 韩 脓 冯 关 镐 谎 沙 绘 队 湍 彻 助 运 算 符 和 表 达 式 运 算 符 和 表 达 式 例 3.8 用条件表达式计算。 (1)1)求变量求变量t t的符号。 的符号。 f=t=0?1:1f=t=0?1:1 (2)(2)求三个变量求三个变量x x、y y、z

11、z的最大值。的最大值。 s=(s=xy?x:y)z?s:zs=(s=xy?x:y)z?s:z (3)(3)将字符变量将字符变量chch若为小写字母则改为大写字母,其余字符不变若为小写字母则改为大写字母,其余字符不变 。 ch=(ch=a(x0)?printf(%d,x):printf(%d,x); 击 赣 眉 籍 铭 谩 嫌 丁 赡 婪 钟 瓤 侨 湾 憎 怠 蹲 虾 卿 戴 喇 搬 袒 折 惧 弯 唁 足 俭 乍 曝 棺 运 算 符 和 表 达 式 运 算 符 和 表 达 式 例例 3.9 3.9 下列程序输入变量下列程序输入变量a a、b b、c c 后,按值从大到小后,按值从大到小 输出

12、。输出。 #include#include voidmain()voidmain() inta,b,c,m,n,k;inta,b,c,m,n,k; scanf(%d%d%d,scanf(%d%d%d, m=ab?a:b;m=ab?a:b;/m/m取取a a、b b中大数中大数 m=mc?m:c;m=mc?m:c;/m/m取取a a、b b、c c中最大数中最大数 n=ab?a:b;n=ab?a:b;/n/n取取a a、b b中小数中小数 n=nc?n:c;n=nc?n:c;/n/n取取a a、b b、c c中最小数中最小数 k=a+b+cmnk=a+b+cmn;/;/三个数的和减去最大、小数,

13、得中间数三个数的和减去最大、小数,得中间数 printf(%d%d%dn,m,k,n);printf(%d%d%dn,m,k,n); 程序运行:程序运行: 587587 758758 邢 训 昔 厉 晃 秧 啮 冉 芦 静 度 妒 扦 咒 韦 卷 允 哟 铃 椅 碱 谅 硬 钙 馆 撬 工 琅 狡 慑 这 斗 运 算 符 和 表 达 式 运 算 符 和 表 达 式 v表达式一般形式:表达式1,表达式2, ,表达式n v结合性:从左向右 v优先级: 15 v逗号表达式的值:等于表达式n的值 v用途:常用于循环for语句中 例例: : #include#include main()main() i

14、ntx,y=7,a,b,c;intx,y=7,a,b,c; floatz=4;floatz=4; x=(y=y+6,y/z);x=(y=y+6,y/z); c*=(a=b=1,c=2,b+=a,b*5);c*=(a=b=1,c=2,b+=a,b*5); printf(x=%dn,x);printf(x=%dn,x); printf(“a=%d,b=%d,c=%d”,a,b,c);printf(“a=%d,b=%d,c=%d”,a,b,c); 运行结果:运行结果: x=3x=3 a=1,b=2,c=20a=1,b=2,c=20 3.6 逗号表达式 担 莹 比 益 跪 衣 阻 破 性 卢 瘤 求

15、蔽 遥 喘 欺 食 桂 划 撅 务 该 鼎 烙 讯 阅 工 系 立 苍 硼 色 运 算 符 和 表 达 式 运 算 符 和 表 达 式 3.7.1 运算符优先级 规定了在表达式求解过程中,当运算对象的左右都有运算符 时运算的先后次序,即运算对象先做优先级高的运算。 如:46*8,先做“*”运算,其结果再做“”,因“*”优先级高 于“”。 C语言的运算符有15种优先级,运算级别高的运算先计算,再 进行运算级别低的运算。表达式中可通过增加括号来改变运 算顺序。 3.7 多种类型混合运算 腋 场 硒 锤 略 蔷 儡 施 顶 绽 邦 珐 磕 硒 笼 躁 腾 击 男 驳 喝 肘 较 孟 会 嗜 试 婴

16、病 饶 侗 形 运 算 符 和 表 达 式 运 算 符 和 表 达 式 表表3.2 3.2 部分运算符的优先级与结合性部分运算符的优先级与结合性 优先级运算符运算符名称运算对象数举 例结合方向 1()圆括号!(a+b)*c自左至右 2 ! +、- +、- (类型标识符) sizeof 逻辑非 自加、自减 正号、负号 类型强制转换 数据长度 1(单目) !(a0&b= 5x=5 x5&x5|xy?x:y自右至左 14=+=-=*=/=%=赋值2(双目)x=5,x*=5,y/=x+6自右至左 15,逗号2(双目)a=b,b=c+6,c+自左至右 伸 庆 炬 戚 揍 藏 椅 昔 雍 涉 嘉 窗 头

17、蜒 余 豹 俏 灿 遭 涤 担 柳 眉 纷 轰 孽 浓 矾 耸 倡 鹰 尉 运 算 符 和 表 达 式 运 算 符 和 表 达 式 3.7.2 运算符结合方向 规定了在表达式求解过程中,若运算对象其左右运算符优规定了在表达式求解过程中,若运算对象其左右运算符优 先级相同时的运算方向。先级相同时的运算方向。 结合性有两种:从左到右计算为左结合、从右到左计算为结合性有两种:从左到右计算为左结合、从右到左计算为 右结合。右结合。 如:表达式如:表达式1.0*5/21.0*5/2,计算结果为,计算结果为2.52.5;表达式;表达式5/2*1.05/2*1.0,计,计 算结果为算结果为2.02.0。 3

18、.7 多种类型混合运算 他 茁 恋 妆 氮 然 膊 噬 补 喊 樊 蒲 减 烟 龋 扫 韩 褂 豁 钉 途 紊 迈 承 屋 曹 县 涤 课 惨 恳 偏 运 算 符 和 表 达 式 运 算 符 和 表 达 式 3.7.3 混合运算的类型转换 算术运算中的类型转换算术运算中的类型转换 隐式转换隐式转换 运算转换规则运算转换规则: :不同类型数据运算时先不同类型数据运算时先自动自动转换成同一转换成同一 类型,类型,转换规则如下转换规则如下: 3.7 多种类型混合运算 规则规则1 1:charchar、short intshort int、float doublefloat double 结果类型与转

19、换后的类型相同结果类型与转换后的类型相同 如:如:3.0e35f*4.0e40f 3.0e35f*4.0e40f 计算结果12.0e75,类型为double。 自动转换自动转换 几 岁 其 脆 奋 截 痰 厅 部 敷 副 寇 愧 篮 稠 圾 俯 摈 拒 转 捶 坟 顺 亩 绩 枚 设 赢 谣 驹 硷 悄 运 算 符 和 表 达 式 运 算 符 和 表 达 式 3.7.3 混合运算的类型转换 3.7 多种类型混合运算 规则2:相同类型(除charchar、shortshort、floatfloat型外)的操作型外)的操作 数作算术运算的结果为同一类型。数作算术运算的结果为同一类型。 如:如: 5

20、/2 5/2 结果为结果为2 2,5/25/2结果为结果为22。 规则规则3 3:不同类型不同类型,先按,先按规则规则1 1转换,还有转换,还有不同类型,则不同类型,则 再再按按低级别低级别 高级别,高级别,其结果类型与转换后的类型其结果类型与转换后的类型 相同。相同。 自动转换 如: 2.0f+5/2*3,原表达式相当于2.0f+(5/2)*3),结果 为8.0,类型是double型。 各类型的级别高低如下:各类型的级别高低如下: charshortintunsignedlongunsignedlongfloatdoublecharshortintunsignedlongunsignedlo

21、ngfloatdouble 掠 谤 窄 捣 创 榴 慨 睬 欣 它 症 贿 帚 淀 蛙 食 无 主 盈 擒 捻 呢 痘 陡 赁 踏 沿 凳 毫 侄 捉 猛 运 算 符 和 表 达 式 运 算 符 和 表 达 式 3.7.3 混合运算的类型转换 强制类型转换运算强制类型转换运算 一般形式:一般形式:( (类型名类型名) )( (表达式表达式) ) 例例 (int)(x+y) (int)(x+y) (int)x+y (int)x+y (double)(3/2) (double)(3/2) (int)3.6 (int)3.6 说明:强制转换得到所需类型的中间变量,原变量类说明:强制转换得到所需类型的

22、中间变量,原变量类 型不变型不变 3.7 多种类型混合运算 哦 村 冬 呸 围 炉 免 尼 鹏 开 咱 警 囊 视 仿 刹 激 兵 肥 辰 揣 婚 逮 罩 鸦 霜 掌 器 寅 篙 漫 虑 运 算 符 和 表 达 式 运 算 符 和 表 达 式 例 3.10 强制类型转换举例。 (1)计算实型变量x的整数部分与y的小数部分之 和。 写作:(int)x+y-(int)y (2)实型数据d保留3位小数(不四舍五入)。 写作:(int)(d*1000)/1000.0 (3)求整型变量k的右边第n位上的数字。 写作:k/(int)pow(10,n1)%10k/(int)pow(10,n1)%10 厩 口 峨 仁 僵 锡 阻 沾 谋 帧 溅 凰 铬 部 喝 匣 薯 购 絮 惭 盲 诱 昨 顶 窗 伯 易 苯 戴 篮 突 辐 运 算 符 和 表 达 式 运 算 符 和 表 达 式

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1