分校C课件第5讲运算符和表达式.ppt_第1页
分校C课件第5讲运算符和表达式.ppt_第2页
分校C课件第5讲运算符和表达式.ppt_第3页
分校C课件第5讲运算符和表达式.ppt_第4页
分校C课件第5讲运算符和表达式.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

第五讲 运算符和表达式,引例 算术运算符 运算符的优先级和结合性 类型转换 自增自减运算符 逗号运算符,2/25,引例,引例 问题 输入一个四位的正整数,反序输出该四位数的四个数字字符。 设计 用一个无符号整型变量number保存输入的四位正整数。 依次分解出个位数字、十位数字、百位数字和千位数字,并分别放到字符变量c1、c2、c3和c4中。 怎么分解? 利用除法、取模等运算。 顺序输出变量c1、c2、c3和c4中的字符。,运算符和表达式,3/25,引例,源程序(cw0401.c),运算符和表达式,#include void main() unsigned number; char c1, c2, c3, c4; printf(“请输入一个四位的正整数:“); scanf(“%u“, ,请输入一个四位的正整数: 1234 4321,4/25,算术运算符,常用的算术运算及运算符 说明 取模运算(%),结果是两个整数相除的余数。 例如,7%5 = 2,-2%3 = -2。,运算符和表达式,5/25,算术运算符的优先级和结合性,运算符的优先级 某些运算符先于其他运算符被执行。 例如,x + y * 4,先乘除后加减。 必要时可以用圆括号()改变计算顺序。 例如,求三个数的平均值。 错误的写法:a + b + c / 3 正确的写法:(a + b + c ) / 3 运算符的结合性 当出现并列的运算优先级别相同的运算符时,由运算符的结合性决定计算的次序。 例如,x * y / z,运算符和表达式,6/25,算术运算符的优先级和结合性,常用的算术运算符的优先级和结合性,运算符和表达式,7/25,算术表达式,算术表达式 算术表达式,是由算术运算符和括号将运算对象(也称为操作数)连接起来的式子。 运算对象包括常量、变量、函数等。 举例,运算符和表达式,7/5 x+y+z (f1*2)/f2+0.5 sqrt(a)+sqrt(b),表达式有自己的值(计算结果),其值的类型就是表达式的类型。,8/25,算术表达式,举例(cw0402.c),运算符和表达式,#include void main() double f1; double f2; f1=1/3; f2=1.0/3.0; printf(“f1=%fnf2=%fn“, f1, f2); ,f1=0.000000 f2=0.333333,整数相除结果还是整数。,可见输入数据的表示方法多么重要,9/25,类型转换,在算术表达式中允许不同类型的数据参与运算。 例如,10+a+1.5-65.4*b 在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。 转换方式有两种: 自动转换:数据类型自动由低级向高级转换。 强制转换:将表达式的值强制转换成指定的数据类型。,运算符和表达式,10/25,自动类型转换,这种类型转换由编译系统自动完成。 转换规则:,运算符和表达式,说明: 1、横向的箭头表示必做的转换。 2、纵向的箭头表示当运算对象类型不同时转换的方向。,11/25,强制类型转换,类型转换运算符: ( ) ()() 将一个表达式的值转换成指定的类型。 属单目运算符。 优先级:2。 结合性:从右往左。 举例 (double)a (int)(x+y) (int)x+y (float)(5/3) 1.0,运算符和表达式,12/25,类型转换,下面表达式的类型是什么? 10+a+1.5-87.1*b 举例(cw0403.c),运算符和表达式,#include void main() double f; int i; f=3.6; i=(int)f; printf(“f=%fni=%dn“,f,i); ,f=3.600000 i=3,f 的类型并未因此而改变!,应为一个浮点数且为一个负数。,13/25,赋值运算,赋值运算符 简单赋值运算符:= 复合赋值运算符:+=,-=,*=,/=,%= 优先级:14 结合性:从右往左 赋值表达式 d = 23 作用:将表达式的值赋给变量。 赋值表达式的值就是被赋值的变量的值。,运算符和表达式,14/25,简单赋值运算,简单赋值运算符:= 举例,运算符和表达式,c=a+b a=b=c=d=10 x=(a=5)+(b=8),a=(a+b) a=(b=(c=(d=10) a=5, b=8, x=a+b,类型转换 如果赋值运算符右边表达式的类型与左边变量的类型不一致,则把右边表达式值的类型按左边变量的类型进行转换,然后再赋值。 例如,int n = 3.6; n的值为3。,15/25,复合赋值运算,复合赋值运算符:+=, -=, *=, /=, %= 简化了赋值表达式 = 由下面的表达式简化而来 = 举例,运算符和表达式,a+=5 x*=y+7 x+=x-=x*=x,a=a+5 x=x*(y+7) x=x+(x=x-(x=x*x),16/25,自增和自减运算符,自增和自减运算符 自增运算符:+ 将操作数的值增一。 自减运算符:- 将操作数的值减一。 操作数必须是整型和字符型变量。 单目运算符。 优先级:2。 结合性:从右往左。,运算符和表达式,17/25,自增和自减表达式,表达式形式 前缀形式:+或- 先改变操作数的值,然后执行表达式中其它运算,并得到表达式的值。 举例 +c 的值为 c+1 -c 的值为 c-1 后缀形式:+或- 先不改变操作数的值,执行表达式中其它运算,并得到表达式的值,然后改变操作数的值。 举例 c+ 的值为 c c- 的值为 c,运算符和表达式,运算符及其优先级和结合性见书附录2,18/25,自增和自减运算,举例(cw0404.c),运算符和表达式,#include void main() int i=6, a, b; printf(“%dn“, +i); printf(“%dn“, i+); a=-i; printf(“%dn“, a); b=i-; printf(“%dn“, b); printf(“%dn“, -i+); printf(“i=%dn“, i); ,7 7 7 7 -6 i=7,i = ?,19/25,自增和自减运算,举例(cw0405.c),运算符和表达式,#include void main() int i=5, j=5, p, q; p=(i+)+(i+); q=(+j)+(+j); printf(“p=%d,i=%dn“, p, i); printf(“q=%d,j=%dn“, q, j); ,p=10,i=7 q=14,j=7,请查看我 的另一个例:jcp38L4-3.c,20/25,自增和自减运算,举例(cw0406.c),运算符和表达式,#include void main() int i, j, k; i=1; j=1; k=i+j; printf(“i=%dnj=%dnk=%dn”,i,j,k); ,i=2 j=1 k=2,k=(i+)+j;,21/25,使用增量运算符要注意以下几点: (1)对i+ + +j 表达式的处理: 采用“自左至右”的原则 即: i+ + +j 与(i+ +)+j 等价,而不是与i+(+ +j )等价。 (2)增量运算符有副作用,会改变运算分量的值。但是如果使用不当,会带来意想不到的结果,如: 若i=3,则表达式(i+ +)+(i+ +)+(i+ +)的结果应为多少? 有的系统从左到右顺序完成括号中的运算,即表达式经过为3+4+5=12。 另外一些系统(如Turbo C、MS C、VC)则先计算表达式的值,再自加3次i,即表达式结果为3+3+3=9。 (3)不同的C环境,如: i=2,a=(+i)+(+i)+(+i) 值不同:VC认为a=13,即前两个括号中i自增为4后,相加,得值为8,再i自增1后相加。 即8+5=13。 (4)其他运算也采用相同的方式处理.,22/25,逗号运算符,逗号运算符:, 优先级:15。 结合性:从左往右。 逗号表达式 (, , , ) x=1, (a=b+1), i+ 求解过程:先求表达式1的值,再求表达式2的值,直至求出表达式n的值。 整个逗号表达式的值为表达式n的值。,运算符和表达式,23/25,逗号运算符,举例(cw0407.c),运算符和表达式,#include void main() int a=2, b=4, c=6; int x, y; y=(x=a+b),(b+c); printf(“x=%dny=%dn”, x, y); printf(“a=%dnn“,a+=5,b=10,+a); /逗号表达式 ,x=6 y=10 a=13,这里的逗号只是分隔符。,24/25,小结,语句是组成程序的基本成分。 C语言的常用语句 算法 概念 与程序设计的关系 表示方法 结构化程序设计,语句和算法,常用的算术运算符 运算符的优先级和结合性 类型转换 赋值运算符 自增自减运算符 逗号运算符,25/25,eMule下载:,1 C程序设计视频教程(曾怡副教授):本套视频教程由曾怡副教授讲解,使用教材为:C程序设计 谭浩强 清华大学出版社出版。是难得的C语言学习视频教程。全程共30讲,每讲45分钟左右,CSF视频格式。 网址:/2004/12/06/0000029347.html 2 吉林大学远程教育课程(康辉副教授): C语言程序设计 51课 6CD 据说是最好的C语言教程,和谭浩强的C语言教程一样的出名。该教程的最大特点是详细,每一个知识点都会举出一个例子来Try it out。更为人文的是,举的例子不仅是书上的知识重点,而且对每一个应用中容易犯的错误,或是极易混淆的知识点,也会举出一些对比的例程来加深印象,对实际应

温馨提示

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

最新文档

评论

0/150

提交评论