C语言第4章数据运算.ppt

上传人:tia****nde 文档编号:11495474 上传时间:2020-04-25 格式:PPT 页数:45 大小:295KB
返回 下载 相关 举报
C语言第4章数据运算.ppt_第1页
第1页 / 共45页
C语言第4章数据运算.ppt_第2页
第2页 / 共45页
C语言第4章数据运算.ppt_第3页
第3页 / 共45页
点击查看更多>>
资源描述
教学内容:4.1数据运算的基本概念4.2算术运算4.3赋值运算4.4关系运算4.5逻辑运算4.6自增自减运算4.7其它运算教学要求:1.掌握各种运算符的优先级、结合方向。2.掌握各种数据运算的运算符的运算。3.掌握混合运算时的类型转换规则。,第4章数据运算,4.1数据运算的基本概念,1.运算符C语言具有丰富的运算符。TurboC提供了44种数据操作运算符,其使用范围很宽。运算符是一种向编译程序说明特定的运算或操作的符号。每一种运算符都具有特定的数据操作规则。2.运算符的分类(1)按运算符要求运算对象的个数分类:单目运算符、双目运算符、三目运算符。(2)按其数据操作功能分类:算术运算符、关系运算符、逻辑运算符、位运算符、C的特殊运算符。,3.运算符的优先级当一个表达式中出现多个运算符时,表达式的求值运算按运算符的优先级别从高到低的顺序执行。在C语言中,将44种运算符的优先级从高到低共分为15个等级。如表4.1所示。4.运算符的结合性(1)运算符的左结合性:当一个操作数两侧的运算符具有相同的优先级时,操作数先与左边的运算符结合,即自左至右的结合方向。(2)运算符的右结合性:即自右至左的结合方向。除单目运算符、赋值运算符和三项条件运算符是右结合性外,其它运算符都是左结合性。,初等运算符()、单目运算符!、+、+、(类型)算术运算符、/、%,+、关系运算符、=,=、!=逻辑运算符floatx,y,z;a=85;b=18;x=42.6;y=28.3;c1=a/b*9+a%b;z=x/y(x+y)/21;printf(c1=%dn,c1);printf(z1=%fn,z);程序运行结果:c1=49z1=39.172222,a/b的值是4,4乘9得36,a%b的值1336+13得49,混合运算中数据类型的转换:,6.数据类型转换,1)横向向左的箭头,表示必须的转换。char和short型必须转换成int型,float型必须转换成double型。2)纵向向上的箭头,表示不同类型的转换方向。,(1)整型、实型和字符型数据间可以混合运算(因为字符数据与整型数据可以通用)。一个运算符两侧的操作数的数据类型不同,则按“先转换、后运算”的原则,首先将数据自动转换成同一类型,然后进行运算。例如,int型与double型数据进行混合运算,则先将int型数据转换成double型,然后在两个同类型的数据间进行运算,结果为double型。注意箭头方向只表示数据类型由低向高转换.,例4.2整型、实型数据间混合运算#includemain()inta;floatx;a=35;x=42.63;printf(%fn,a+x);printf(%fn,x/a);程序运行结果:77.6300011.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数据类型强制转换#includemain()inta;floatx,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.5000002-2.0000003-614-85.000000,4.3赋值运算,1.赋值运算赋值运算符:“=”,它的作用是将一个表达式的值赋给一个变量。给变量赋值的一般形式为:变量=表达式2赋值运算符的优先级赋值运算符的优先级低于算术运算符,也低于关系运算符和逻辑运算符。3赋值运算结合方向赋值运算结合方向:自右向左结合。,4.赋值表达式由赋值运算符或复合赋值运算符,将一个变量和一个表达式连接起来的表达式,称为赋值表达式。(1)赋值表达式一般格式变量赋值运算符表达式例如,a=5、b=x+3*y(2)赋值表达式的值任何一个表达式都有一个值,赋值表达式也不例外。被赋值变量的值,就是赋值表达式的值。例如,a=5赋值表达式,变量a的值是赋值表达式的值是。,例如,intx;floaty;x=5y=(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+ax/=3等价于x=x/3(2)10种复合赋值运算符C语言规定的10种复合赋值运算符如下:复合算术运算符:+=-=*=/=%=复合位运算符:x=10;y=3;m=24;m/=x4;printf(“%dn”,m);printf(“%fn”,(float)x/y);x=1;y*=x+2;printf(“%d-%dn”,x/y,x%y);运行结果:43.3333330-1,m=m/(x4);,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。n1n2n3表达式的值:1。思考:任意改变n1或n2的值,会影响整个表达式的值吗?为什么?再次强调:C语言用整数“1”表示“逻辑真”,用整数“0”表示“逻辑假”。(3)关系表达式的值,还可以参与其它种类的运算,例如算术运算、逻辑运算等。(n111.564temp=a+6b,4.6自增自减运算,1.自增(+)、自减(-)运算自增运算使单个变量的值增,自减运算使单个变量的值减。2.用法与运算规则(1)前置运算运算符放在变量之前:变量、变量,先使变量的值增(或减),然后再以变化后的值参与其它运算,即先增、减,后运算。(2)后置运算运算符放在变量之后:变量、变量,变量先参与其它运算,然后再使变量的值增(或减),即先运算,后增、减。(3)结合方向:右左,3.自增、自减运算说明(1)自增、自减运算符,不能用于常量和表达式。例如,5+、-(a+b)等都是非法的。(2)自增、自减运算,常用于循环语句中,使循环控制变量加(或减),以及指针变量中,使指针指向下(或上)一个地址。(3)在表达式中,连续使同一变量进行自增或自减运算时,很容易出错,所以最好避免这种用法。例如:a+a+a+b,例4.6求下列表达式的值设inta,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()intx=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=6y=+x:x=7,y=7y=x-:x=8,y=7,1.条件运算符:?:2条件表达式一般格式:表达式1?表达式2:表达式3条件表达式中的“表达式1”、“表达式2”、“表达式3”的类型,可以各不相同。intx,y,a,b;charc;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=5y=8a=34b=12表达式的值:22,例4.8从键盘上输入一个字符,如果它是大写字母,则把它转换成小写字母输出;否则,直接输出。main()charch;printf(Inputacharacter:);scanf(%c,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。注意:并不是任何地方出现的逗号,都是逗号运算符。很多情况下,逗号仅用作分隔符。例如:inta,b;a=3;b=4;printf(“%d%dn”,a+b,b+3);,6.求字节数运算符(1)运算符:sizeof求字节数运算符与算术运算符的表示形式不同,它是由字母组成的。(2)求字节数表达式的格式:sizeof变量名该表达式求出变量所占内存存储单元的字节个数,结果是一个正整型数。sizeof(数据类型名)该表达式求出指定数据类型所需内存存储单元的字节个数,结果是一个正整型数。例如:设chara1;sizeofa1表达式的值:1sizeof(int)表达式的值:2,同学们再见,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!