计算机软件技术基础 第7章 运算符和表达式.ppt
《计算机软件技术基础 第7章 运算符和表达式.ppt》由会员分享,可在线阅读,更多相关《计算机软件技术基础 第7章 运算符和表达式.ppt(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第七章第七章 运算符和表达式运算符和表达式7.1 运算符运算符n算术运算符:、*、/、%n关系运算符:、=、=、!=n逻辑运算符:!、&、|n位运算符:、|、&n赋值运算符:=及其扩展赋值运算符n条件运算符:?:n逗号运算符:,n指针运算符:*、&n求字节数运算符:sizeofn强制类型转换运算符:(类型)n分量运算符:.、n下标运算符:n自加、自减运算符:、n其它:如函数调用运算符()第七章第七章 运算符和表达式运算符和表达式7.2表达式表达式n由运算符加上运算对象就构成了表达式,由运算符加上运算对象就构成了表达式,C语语言允许使用以下类型的表达式:言允许使用以下类型的表达式:(1)赋值表达
2、式,如:)赋值表达式,如:a=5(2)算术表达式,如:)算术表达式,如:34*2(3)关系表达式,如:)关系表达式,如:56(4)逻辑表达式,如:)逻辑表达式,如:35&a=b(5)条件表达式,如:)条件表达式,如:ab?a:b(6)逗号表达式,如:)逗号表达式,如:a=3,b=4,c=5第七章第七章 运算符和表达式运算符和表达式7.3 表达式的求值规则表达式的求值规则nC语言中的任何一个表达式都有一个确语言中的任何一个表达式都有一个确定的值,表达式的求值规则如下:定的值,表达式的求值规则如下:(1)按运算符的优先级高低次序执行。)按运算符的优先级高低次序执行。(2)如果在一个运算对象(或称操
3、作数)如果在一个运算对象(或称操作数)两侧的运算符的优先级相同,则按两侧的运算符的优先级相同,则按C语言语言规定的结合方向(结合性)进行。规定的结合方向(结合性)进行。第七章第七章 运算符和表达式运算符和表达式n优先级,是指在表达式中,运算符优先优先级,是指在表达式中,运算符优先级较高的先于优先级较低的进行运算。级较高的先于优先级较低的进行运算。n结合性,是指当一个操作数两侧的运算结合性,是指当一个操作数两侧的运算符具有相同的优先级时,该操作数是先符具有相同的优先级时,该操作数是先与左边的运算符结合,还是先与右边的与左边的运算符结合,还是先与右边的运算符结合。自左至右的结合方向,称运算符结合。
4、自左至右的结合方向,称为左结合性,反之称为右结合性。为左结合性,反之称为右结合性。n单目运算符、条件运算符和赋值运算符单目运算符、条件运算符和赋值运算符是右结合性,其他运算符是左结合。是右结合性,其他运算符是左结合。7.3 表达式的求值规则表达式的求值规则第七章第七章 运算符和表达式运算符和表达式n算术表达式中,运算对象可以是常量,算术表达式中,运算对象可以是常量,变量和函数等。变量和函数等。1基本算术运算符基本算术运算符基本算术运算符有如下基本算术运算符有如下5种:种:(加法加法)、(减法减法)、*(乘法乘法)、/(除法除法)、%(求余数求余数)7.4 算术表达式算术表达式第七章第七章 运算
5、符和表达式运算符和表达式n说明:说明:(1)除法运算)除法运算“/”:C语言规定:两个整数相语言规定:两个整数相除,其商为整数,小数部分被舍弃。如果相除除,其商为整数,小数部分被舍弃。如果相除的两个数中至少有一个是实型的,则结果为实的两个数中至少有一个是实型的,则结果为实型。型。(2)求余数运算)求余数运算“%”:求余数运算要求两侧的:求余数运算要求两侧的操作数均为整型数据,否则出错。在操作数均为整型数据,否则出错。在Turbo C中,结果的符号与被除数的符号相同。中,结果的符号与被除数的符号相同。7.4 算术表达式算术表达式第七章第七章 运算符和表达式运算符和表达式2算术表达式算术表达式n所
6、谓算术表达式,是指表达式中的运算符都是所谓算术表达式,是指表达式中的运算符都是算术运算符。算术运算符。n在在C语言中,整型、实型和字符型数据间可以语言中,整型、实型和字符型数据间可以混合运算(因为字符数据与整型数据可以通用)混合运算(因为字符数据与整型数据可以通用),如果一个运算符两侧的操作数的数据类型不,如果一个运算符两侧的操作数的数据类型不同,则系统按同,则系统按“先转换,后运算先转换,后运算”的原则,首的原则,首先将数据自动转换成同一类型,然后在同一类先将数据自动转换成同一类型,然后在同一类型数据间进行运算。型数据间进行运算。7.4 算术表达式算术表达式第七章第七章 运算符和表达式运算符
7、和表达式7.4 算术表达式算术表达式说明:说明:(1)横向向左的箭头,表示必须的转换。)横向向左的箭头,表示必须的转换。(2)纵向向上的箭头,表示不同类型的转换)纵向向上的箭头,表示不同类型的转换方向。方向。第七章第七章 运算符和表达式运算符和表达式n注意:注意:箭头方向只表示数据类型级别的高低,箭头方向只表示数据类型级别的高低,由低向高转换,不要理解为由低向高转换,不要理解为int型先转成型先转成unsigned型,再转成型,再转成long型,再转成型,再转成double型。如果一个型。如果一个int型数据与一个型数据与一个double型数据运算,是直接将型数据运算,是直接将int型转成型转
8、成double型。型。7.4 算术表达式算术表达式第七章第七章 运算符和表达式运算符和表达式7.5 赋值表达式赋值表达式1赋值运算符:赋值运算符:=作用是将一个表达式的值赋给一个变量。作用是将一个表达式的值赋给一个变量。2赋值表达式赋值表达式n由赋值运算符将一个变量和一个表达式连接由赋值运算符将一个变量和一个表达式连接起来就构成了赋值表达式,它的一般形式为:起来就构成了赋值表达式,它的一般形式为:变量变量=表达式表达式n对赋值表达式求解的过程是:先求解赋值运算对赋值表达式求解的过程是:先求解赋值运算符右侧表达式的值,然后将值赋给左边的变量,符右侧表达式的值,然后将值赋给左边的变量,赋值表达式的
9、值就是被赋值的变量的值。赋值表达式的值就是被赋值的变量的值。第七章第七章 运算符和表达式运算符和表达式n例如:例如:x=5 /*将将5赋值给变量赋值给变量x*/y=(float)5/2 /*将表达式的值将表达式的值(=2.5)赋值给赋值给变量变量y*/n注意:被赋值的变量,必须是单个变量,且必注意:被赋值的变量,必须是单个变量,且必须在赋值运算符的左边;赋值表达式又允许出须在赋值运算符的左边;赋值表达式又允许出现在其它赋值表达式当中。现在其它赋值表达式当中。7.5 赋值表达式赋值表达式第七章第七章 运算符和表达式运算符和表达式n当表达式值的类型与被赋值变量的类型不一当表达式值的类型与被赋值变量
10、的类型不一致,但都是数值型或字符型时,系统会自动地致,但都是数值型或字符型时,系统会自动地将表达式的值转换成被赋值变量的数据类型,将表达式的值转换成被赋值变量的数据类型,然后再赋值给变量。具体规定如下:然后再赋值给变量。具体规定如下:(1)实型赋予整型,舍去小数部分。)实型赋予整型,舍去小数部分。(2)整型赋予实型,数值不变,但将以浮点)整型赋予实型,数值不变,但将以浮点形式存放。形式存放。(3)字符型赋予整型,由于字符型为一个字)字符型赋予整型,由于字符型为一个字节,而整型为二个字节,故将字符的节,而整型为二个字节,故将字符的ASCII码码值放到整型量的低八位中,高八位为值放到整型量的低八位
11、中,高八位为0。短整。短整型赋给长整型时同理。型赋给长整型时同理。第七章第七章 运算符和表达式运算符和表达式(4)整型赋予字符型,只把低八位赋予字符)整型赋予字符型,只把低八位赋予字符量。长整型赋给短整型时同理。量。长整型赋给短整型时同理。(5)双精度实型数据转换成单精度实型数据)双精度实型数据转换成单精度实型数据时,只保留单精度的有效位数。时,只保留单精度的有效位数。(6)除自动转换外,)除自动转换外,C语言也允许强制转换。语言也允许强制转换。数据类型强制转换的一般格式为数据类型强制转换的一般格式为(要转换成的数据类型要转换成的数据类型)(被转换的表达式被转换的表达式)其中,当被转换的表达式
12、是一个简单表达式其中,当被转换的表达式是一个简单表达式时,外面的一对原括号可以省略。时,外面的一对原括号可以省略。7.5 赋值表达式赋值表达式第七章第七章 运算符和表达式运算符和表达式n例如:例如:(double)a /*将变量将变量a的值转换成的值转换成double型,等价于型,等价于(double)(a)*/(int)(xy)/*将将xy的结果转换成的结果转换成int型型*/(float)5/2 /*将将5转换成实型,再除以转换成实型,再除以2(=2.5),等价于,等价于(float)(5)/2*/(float)(5/2)/*将将5整除整除2的结果转换成实的结果转换成实型型(2.0)*/7
13、.5 赋值表达式赋值表达式第七章第七章 运算符和表达式运算符和表达式3复合赋值运算复合赋值运算复合赋值运算符是在赋值运算符之前再加一复合赋值运算符是在赋值运算符之前再加一个双目运算符构成的。复合赋值运算的一般格个双目运算符构成的。复合赋值运算的一般格式为:式为:变量变量 双目运算符双目运算符=表达式表达式等价:变量等价:变量=(变量变量 双目运算符双目运算符 表达式表达式)。当表达式为简单表达式时,表达式外的一对圆当表达式为简单表达式时,表达式外的一对圆括号才可以省略,否则可能出错。括号才可以省略,否则可能出错。7.5 赋值表达式赋值表达式第七章第七章 运算符和表达式运算符和表达式n例如:例如
14、:x=5 /*等价于等价于x=x5*/y*=x3 /*等价于等价于y=y*(x3),而不是,而不是y=y*x3*/nC语言规定的语言规定的10种复合赋值运算符如下:种复合赋值运算符如下:=,=,*=,/=,%=/*复合算术运算符复合算术运算符(5个个)*/=,=,|=,=/*复合位运算符复合位运算符(5个个)*/7.5 赋值表达式赋值表达式第七章第七章 运算符和表达式运算符和表达式n例例7.1求以下算术表达式的值。求以下算术表达式的值。(1)xa%3*(int)(xy)%2/4设设x=2.5,a=7,y=4.7(2)(float)(ab)/2(int)x%(int)y设设a=2,b=3,x=3
15、.5,y=2.5解:(解:(1)2.500000(2)3.5000007.5 赋值表达式赋值表达式第七章第七章 运算符和表达式运算符和表达式n例例7.2求以下表达式的值,设求以下表达式的值,设a=12。(1)a=a(2)a=2(3)a*=23(4)a/=aa(5)a%=(n%=2),n的值等于的值等于5(6)a=a=a*=a解:(解:(1)24(2)10(3)60(4)0(5)0(6)07.5 赋值表达式赋值表达式第七章第七章 运算符和表达式运算符和表达式7.6 自加、自减表达式自加、自减表达式1.运算符:运算符:(自加自加)、(自减)、(自减)自加运算使单个变量的值增自加运算使单个变量的值增
16、1,自减运算使单个变量,自减运算使单个变量的值减的值减1。2.自加、自减表达式自加、自减表达式根据变量与运算符的位置不同,自加、自减表达式根据变量与运算符的位置不同,自加、自减表达式有以下四种情况:有以下四种情况:变量变量,变量变量(前置运算)(前置运算)变量变量,变量变量(后置运算)(后置运算)(1)前置运算)前置运算运算符放在变量之前,它先使变量运算符放在变量之前,它先使变量的值增的值增(或减或减)1,然后再以变化后的值参与运算,即先,然后再以变化后的值参与运算,即先增减,后运算。增减,后运算。(2)后置运算)后置运算运算符放在变量之后,它使变量先运算符放在变量之后,它使变量先参与运算,然
17、后再使变量的值增参与运算,然后再使变量的值增(或减或减)1,即先运算,即先运算,后增减。后增减。第七章第七章 运算符和表达式运算符和表达式例例7.3自增、自减运算符的用法与运算规则示例。自增、自减运算符的用法与运算规则示例。main()int x=6,y;printf(x=%dn,x);/*输出输出x的初值的初值*/y=x;/*前置运算:前置运算:x先增先增1(=7),然后再赋值给,然后再赋值给y(=7)*/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=
18、6,y=77.6 自加、自减表达式自加、自减表达式第七章第七章 运算符和表达式运算符和表达式 说明:说明:(1)自增、自减运算常用于循环语句以及指)自增、自减运算常用于循环语句以及指针变量中。它使循环控制变量加针变量中。它使循环控制变量加(或减或减)1,或,或使指针指向下使指针指向下(或上或上)一个数据的地址。一个数据的地址。(2)自增、自减运算符不能用于常量和表达)自增、自减运算符不能用于常量和表达式。例如,式。例如,5、(ab)等都是非法的。等都是非法的。(3)在表达式中,同一变量连续进行自增自)在表达式中,同一变量连续进行自增自减运算时,很容易出错,所以最好避免这种用减运算时,很容易出错
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机软件技术基础 第7章 运算符和表达式 计算机软件 技术 基础 运算 表达式
限制150内