资源预览内容
第1页 / 共38页
第2页 / 共38页
第3页 / 共38页
第4页 / 共38页
第5页 / 共38页
第6页 / 共38页
第7页 / 共38页
第8页 / 共38页
第9页 / 共38页
第10页 / 共38页
第11页 / 共38页
第12页 / 共38页
第13页 / 共38页
第14页 / 共38页
第15页 / 共38页
第16页 / 共38页
第17页 / 共38页
第18页 / 共38页
第19页 / 共38页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,1,运算符的种类,2,算术运算符,3,自增自减运算符,4,表达式,第二章 数据类型、表达式,退出,1.,目的、要求,掌握,C,的各种数据运算符及优先级,;,2.,重点、难点,自增、自减运算;,算术运算符,用于各类数值运算,包括加,(+),、减,(-),、乘,(*),、除,(/),、求余,%(,或称模运算,),。它们是双目运算符,在使用时需要两个运算量参与运算。,关系运算符,用于比较运算,包括大于,(),、小于,(=),、小于等于,(=),和不等于,(!=),六种。,逻辑运算符,用于逻辑运算。包括与,(&),、或,(|),、非,(!),三种。,1,运算符的种类,自增、自减运算符,包括,+,与,-,。,*位操作运算符,参与运算的量,按二进制位进行运算。包括位与,(&),、位或,(|),、位非,(),、位异或,(),、左移,(),六种。,赋值运算符,用于赋值运算,分为简单赋值,(=),、复合算术赋值,(+=,-=,*=,/=,%=),。,条件运算符,这是一个三目运算符,用于条件求值,(?:),。,逗号运算符,用于把若干表达式组合成一个表达式,(,,,),。,指针运算符,用于取内容,(*),和取地址,(&),二种运算。,求字节数运算符,用于计算数据类型所占的字节数,(sizeof),。,特殊运算符,包括括号,(),,下标,等。,加法运算符,“,+,”,加法运算符为双目运算符,即有两个量参与加法运算。如,x+y,5+6,等。这与一般的数学加法运算相一致。,减法运算符,“,-,”,作为减法运算符时为双目运算符,如,x-y,6-5,等。作为负值运算符时为单目运算,如,-y,-8,等。,乘法运算符,“,*,”,双目运算,如,x*y,5*6,等。,2,算术运算符,除法运算符,“,/,”,除法运算符与我们在中学数学中所学的计算规则有很大的不同,,与参与运算量的数据类型有关。,其一,参与运算量均为整型时,结果也为整型,舍去小数。,其二,如果运算量中有一个是实型,则结果为双精度实型。,求余运算符,(,模运算符,),“,%,”,该运算的实质是求余数。,参与运算的量必须均为整型。,求余运算结果的符号与被除数相同(,这一点应特别注意,),其值等于两数相除后的余数。,对于求余运算,应该从其结果的符号和值两方面来理解。,不同数值类型间的混合运算,整型、单精度型、双精度型的不同数值类型可以进行混合运算。因为字符型数值可以看作整型,故整型、实型,(,包括单精度型与双精度型,),及字符型之间可进行混合运算。但是,在运算时,不同类型数值必须转换为同一类型数值。其转换规律是:自动转换(由系统自动进行,无须干预),就高不就低(把低级类型转换为高级类型,再进行运算)。转换等级如下:,低级 高级,字符型,整型,浮点型,双精度型,不同类型数据的转换,double float,long,unsigned,int char,,,short,高,低,例,.,50L +5 *a -30.0,long int char float,int,long double,double,自增运算符“,+”,(两个加号),其作用是把变量的值增加,1,。,自减运算符为“,-”,(两个减号),其作用是使变量值减少,1,。,自增自减运算符均为单目运算,只需要一个运算量。,+i,i,自增,1,后再参与其它运算。,先加后用,。,-i,i,自减,1,后再参与其它运算。,先减后用,。,i+,i,先参与运算后,,i,的值再自增,1,。,先用后加,。,i-,i,先参与运算后,,i,的值再自减,1,。,先用后减,。,3,自增自减运算符,取变量的值作为表达式的值,:,+n:n=n+1,取,n,的值作为表达式,+n,的值,n+:,取,n,的值作为表达式,n+,的值,n=n+1,例,:,int i,k;,i=2;,k=+i;,i=i+1;,k=i;,i=3,k=3,k=i;,i=i+1;,int i,k;,i=2;,k=i+;,i=3,k=2,在使用自增自减运算符时应注意以下几点:,只能用于变量,不能用于常量。因为常量的值不能改变。所以不能使用如:,10+,、,8-,、,-6,。如果字符,a,表示一个常量,则也不能使用,a+,这样的形式;,对于多个变量的运行结果,也不能使用。例如,(,x+y+z,),+,是不能使用的,因为其结果不能保存在其中的任何一个变量中;,当自增自减运算符与其他运算符结合使用时,应注意其具有“自右向左”结合的特性。,例:自增及自减运算,#include,main(),int x=6,y;,printf(x=%dn,x);,y=+x;,printf(y=+x:x=%d,y=%dn,x,y);,y=x-;,printf(y=x-:x=%d,y=%dn,x,y);,/*,若改为(,y=x+;),,结果如何?*,/,/*,若改为(,y=-x;),,结果如何?*,/,7,,,7,6,,,7,7,,,6,6,,,6,例:,分析下面程序段的运行结果:,#include,main(),int x,y,z;,x=3;/*,整数,3,赋给变量,x*/,y=+x+3;/*,计算赋值号右边的表达式,值赋给,y,变量*,/,printf(%d%dn,x,y);/*,按整数格式输出,x,和,y,的值*,/,z=x+5;/*,计算赋值号右边的表达式,值赋给,z,变量*,/,printf(%d%dn,x,z);/*,按整数格式输出,x,和,z,的值*,/,运行结果,:,4 7,5 9,赋值运算符和赋值表达式,1.,赋值运算符和赋值表达式,赋值运算符:,=,赋值表达式:由赋值运算符组成的表达式,形式:变量名,=,表达式,优先级:只高于逗号运算符,比其它运算符的优先级都低。,结合方式:自右向左,例,:a=3;,赋值运算符和赋值表达式,2.,变量赋初值,变量初始化:在定义变量时用类似赋值的方法给被定义的 变量指定一个初始值。,例,:int i=10;,赋值运算符和赋值表达式,复合赋值运算,10,种复合赋值运算符:,+=,、,-=,、*,=,、,/=,、,%=,、,=,、,&=,、,=,、,|=,将形如:,变量名,=,变量名,+,表达式,的表达式,简化成:变量名,+=,表达式 的形式,优先级和结合方式:与赋值运算符相同。,复合的赋值运算符,赋值运算符前加上其它的运算符构成。,使用复合运算符的目的:简化程序和提高编译效率,-=,:自反减赋值,+=,:自反加赋值,*,=,:自反乘赋值,/=,:自反除赋值,%=,:自反模赋值,a+=3 a=a+3,x*=y+8 x=x*(y+8),x%=3 x=x%3,等价,#include,main(),int a,b=1,c=2;,a=b*=c+2;,printf(%d,%d,%dn,a,b,c);,例:复合运算符,a=b=b*(c+2);,强制转换与优先级,依据表达式的运算结果可以把它分为整型、实型及字符型等。如果不作特殊处理,表达式结果的数值类型根据数值混合运算的规则进行转换,具体数值有组成表达式的各项计算而得。,根据编程的要求,也可以实行强制转换。强制转换格式为:,(,类型,),表达式,使用此格式可以把表达式的值强制转换为,(,类型,),所规定的类型,这种转换不遵照“由低到高”的规则。,(,类型,),可以为:,char,int,float,double,等。,4,表达式,不同的运算有不同的优先级。表达式的优先规则为:,(1).,函数计算最优先,(2).,其次类型转换,(3).,自增,(+),、自减,(-),与取反,(-),次之,(4).,先乘除,后加减,(5).,有括号先算括号内,关于优先级的详细情况,请参考附录。,算术表达式,算术表达式是由算术运算符和括号连接起来的式子。,在,C,语言中使用的算术运算符与中学所学的不同。以“,/”,表示除,以“*”表示乘。例如:“,5/7”,表示“,5,除以,7”,、“,3*4”,表示“,3,乘以,4”,。,赋值运算符和表达式,1,简单赋值,赋值运算符记为“,=”,。其一般形式为:,变量,=,表达式,例如:,z=x+y,、,w=sin(a)+sin(b),、,k=i+,赋值表达式的功能是计算表达式的值再赋予左边的变量。,2,连续赋值,也可以采用连续赋值的方法,其格式为:,变量,1=,变量,2=,变量,3=.,变量,n=,表达式,此时,计算表达式的值,并赋给这一系列变量。,3,赋值语句与赋值表达式,在其它高级语言中,赋值构成了一个语句,称为赋值语句。而在,C,中,把“,=”,定义为运算符,从而组成赋值表达式。凡是表达式可以出现的地方均可出现赋值表达式。,在,C,语言中也可以组成赋值语句,因为任何表达式在其未尾加上分号就成为语句。因此如,x=8;a=b=c=5,;,都是赋值语句。,强制类型转换(显式转换),强迫表达式的值转换为指定的数据类型。其一般格式为:,(类型标识符)表达式,;,例如,:,(,float)a;,将变量,a,的值强迫转换为单精度数据类型。,(,int)(x+y):,将,(x+y),的值,强迫转换为整数类型。,注意:,1,)在强制类型转换中,产生一个中间变量,用于存放其转换后的数值;原变量(表达式)的数据类型不变。,2,)系统提供的数学函数一般要求参数为,double,型,在调用这些函数时,就可使用强制类型转换的方法。,逗号运算符和逗号表达式,在,C,语言提供了一种特殊的运算符号,称为逗号运算符,用来把多个表达式连接起来,相当于一个表达式。其一般形式为:,表达式,1,表达式,2,,,表达式,n,逗号表达式可以嵌套,即表达式,1,和表达式,2,也可以是逗号表达式。,整个逗号表达式的最终值等于表达式,n,的值。,sizeof,运算符,sizeof,是一个单目运算符,它返回变量或类型的字节长度,例如,:,float f;,sizeof(double),为,8,sizeof(float),为,4,sizeof(int),为,2,sizeof(f),为,4,括号内是类型的名字,也可以是已定义的变量名。,例,:测定各数据类型的长度,#include,main(),printf(char:%d bytesn,sizeof(char);,printf(short:%d bytesn,sizeof(short);,printf(int:%d bytesn,sizeof(int);,printf(long:%d bytesn,sizeof(long);,printf(float:%d bytesn,sizeof(float);,printf(double:%d bytesn,sizeof(double);,关系运算,关系运算实际上就是比较运算,就是将两值进行比较,判断是否符合给定的条件。比较两个量的运算符称为关系运算符。,关系运算符的优先级低于算术运算符,高于赋值运算符。在六个关系运算符中,,=,的优先级相同,高于,=,和,!=,,,=,和,!=,的优先级相同。,5,逻辑运算,关系表达式,由关系运算符连接起来的表达式称为关系表达式,如:,a6,就是一个关系表达式。具体讲,当,a=8,时,此关系表达式的值为真。用,1,表示关系表达式为真,用,0,表示关系表达式为假。关系
点击显示更多内容>>

最新DOC

最新PPT

最新RAR

收藏 下载该资源
网站客服QQ:3392350380
装配图网版权所有
苏ICP备12009002号-6