C语言教学 第4章

上传人:无*** 文档编号:244035193 上传时间:2024-10-02 格式:PPT 页数:42 大小:200.50KB
返回 下载 相关 举报
C语言教学 第4章_第1页
第1页 / 共42页
C语言教学 第4章_第2页
第2页 / 共42页
C语言教学 第4章_第3页
第3页 / 共42页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,第,4,章,C,世界中的加减乘除,运算符和表达式,C,中的运算符和表达式,算术运算符和表达式,关系运算符和表达式,逻辑运算符和表达式,条件运算符和表达式,赋值运算符和表达式,自增、自减运算符,逗号运算符和表达式,运算符的优先级,4.1 C,中的运算符和表达式,4.1.1,运算符,4.1.2,表达式,4.1.3,优先级与结合性,4.1.1,运算符,用来对数据进行运算的符号,就可以称为运算符。,语言中的运算符如下表所示:,运算符种类,作用,包含运算符,算术运算符,用于各类数值运算,加,(+),、减,(-),、乘,(*),、除,(/),、求余,(,或称模运算,,%),、,自增,(+),、自减,(-),关系运算符,用于比较运算,大于,(),、小于,(=),、小于等于,(=),、不等于,(!=),逻辑运算符,用于逻辑运算,与,(&),、或,(|),、非,(!),位操作运算符,参与运算的量,按二进制位进行运算,位与,(&),、位或,(|),、位非,(),、位异或,(),、左移,(),赋值运算符,用于赋值运算,简单赋值,(=),、复合算术赋值,(+=,-=,*=,/=,%=),、,复合位运算赋值,(&=,|=,=,=,b?a:b,。,注意:条件运算符(?:)是,C,语言中唯一的三目运算符。,4.1.2,表达式,C,中运算符和数据构成的式子,就称为表达式;,表达式运算的结果就称为是表达式的值。,根据运算符的分类,,C,语言的表达式分为以下,8,类:,算术表达式、关系表达式、逻辑表达式、赋值表达式、条件表达式、逗号表达式、位表达式和其它表达式等。,由以上表达式还可以组成更复杂的表达式,例如:,z=,x+(y,=0),4.1.3,优先级和结合性,优先级:是指当不同的运算符进行混合运算时,运算顺序是根据运算符的优先级而定的,优先级高的运算符先运算,优先级低的运算符后运算。,结合性:是指运算符可以和左边的表达式结合,也可以与右边的表达式结合,即:左结合性和右结合性。,例如:,x+y,*z,注意:最典型的右结合性运算符是赋值运算符,它的结合性是自右向左,4.2,算术运算符和表达式,4.2.1,算术运算符,4.2.2,算术表达式,4.2.3,算术运算符的优先级与结合性,4.2.4,应用举例,4.2.1,算术运算符,基本的算术运算符有,5,个,分别是:,+,:加法运算符或正值运算符,-,:减法运算符或负值运算符,*,:乘法运算符,/,:除法运算符,%,:求模运算符或求余运算符,其中,,+,(正值运算符)和,-,(负值运算符)是单目运算符,其余均为双目运算符。,2x,2*x,a/b,4.2.2,算术表达式,简单的算术表达式,例如:,2+3,:结果为:,5,2-3,:结果为:,-1,2*3,:结果为:,6,2/3,:结果为:,0,2%3,:结果为:,2,注 意:,(1)“,%”,运算符要求两侧的运算分量必须为整型数据;,(2),在,C,中,乘法运算符为“*”,而不能写成数学中的“,”,号;除法运算为“,/”,,而不是“,”,号,。,6.0%4,-6%4,6%-4,-6%-4,4.2.2,算术表达式,复杂的算术表达式,例如:,2*(9/3),结果为,:6,10/(12+8)%9),结果为:,5,4.2.3,算术运算符的优先级和结合性,在复杂的算术表达式中:“()”的优先级最高,“*、,/,、,%”,运算符的优先级高于”,+,、”运算符。,算术运算符中的结合性均为“左结合”。,4.2.4,应用举例,【,范例,4-1】,使用算术运算符计算结果,。,注意,:对于“,/”,运算符,,C,语言中规定:,当它的两个运算分量均为整数时,计算结果也必须为整数。,如果两个运算分量中有一个数是浮点型时,则结果也应该为浮点型数据。例如:,99.0/5,的结果为,19.8,。,如果两个运算分量有一个为负值,其结果随不同的机器系统而不同,但多数机器采用“向零取整”的原则。例如,:-7/4,的结果为,-1,;,7/-4,的结果为,1,。,4.2.4,应用举例,【,范例,4-2】,算术运算符和表达式的应用,。,4.3,关系运算符和表达式,4.3.1,关系运算符,4.3.2,关系表达式,4.3.3,关系运算符的优先级与结合性,4.3.4,应用举例,4.3.1,关系运算符,C,语言提供了,6,种关系运算符,分别是:,(大于)、,=,(大于等于)、,(小于)、,=”,和“,=”,不能写成“”和“”;,等于在,C,中的书写格式为“,=”,而不是“,=”,,注意是两个“,=”,连起来写表示相等的关系,“,=”,是后面要讲的赋值运算符,注意二者的区别。,4.3.2,关系表达式,把两个,C,语言表达式连接起来的式子称为关系表达式;,如:,x!=0 a=A a*,a+b,*,b+c,*cy*y,注意:,数值型数据比较的是数值的大小;字符型数据比较的是,ASCII,码的大小。,关系表达式的结果只有两个:,1,和,0,。当关系表达式成立时值为,1,,不成立时值为,0,。,例如:,若,x=3,,,y=5,,,z=-2,,则:,x+y,z),的结果为,1,a=A,的值为,0,4.3.3,关系运算符的优先级和结合性,“,”,、“,=”,、“,”,和“,=”,的优先级相同;,“,=”,和“,!=”,的优先级相同;,前四种的优先级高于后两种。,例如:,a=bc,等价于,a=(bbc,等价于,(ab)c,关系运算符中的结合性均为“左结合”。,4.3.4,应用举例,【,范例,4-3】,输出程序中表达式的值,01#include,02 void main(),03 ,04,int,a,b,c,;,05 a=b=c=10;/*,a,b,c,均赋值为,10*/,06 a=b=c;/*,将,b=c,的结果赋值变量,a*/,07,printf,(a=%,d,b,=%,d,c,=%,dn,a,b,c,);/*,分别输出,a,b,c,的值*,/,08 a=bc=100;/*,将,bc=100,的结果赋给变量,a*/,09,printf,(a=%,d,b,=%,d,c,=%,dn,a,b,c,);/*,分别输出,a,b,c,的值*,/,10 ,4.4,逻辑运算符和表达式,4.4.1,逻辑运算符,4.4.2,逻辑表达式,4.4.3,逻辑运算符的优先级和结合性,4.4.4,应用举例,4.4.1,逻辑运算符,逻辑运算符主要用于逻辑运算;,包含了“,&”(,逻辑与,),、“,|”,(逻辑或)、“,!”,(逻辑非)。,其中,“,!”,是单目运算符,而”,&”,和“,|”,是双目运算符。,a,b,a&b,a|b,!a,真,真,真,真,假,真,假,假,真,假,假,真,假,真,真,假,假,假,假,真,4.4.2,逻辑表达式,逻辑运算符把各个表达式连接起来组成一个逻辑表达式。例如:,a&b,、,1|(!x),逻辑表达式的值只有两个:,0,和,1,。,举例:,当,x,为,0,时,,x=5,的值为多少。,若,a=4,,则,!a,、,a&-5,、,4|0,的值分别为多少。,4.4.3,逻辑运算符的优先级和结合性,逻辑非(,!,)的优先级别最高,逻辑与(,&,)的优先级高于逻辑或,(|),逻辑非,(!),然后是算术运算符,关系运算符,逻辑与,(&),逻辑或,(|),举例:,5 3&2|!8 =0,),?1:-1,4.5,条件运算符,条件运算符的结合性是“右结合”。,优先级别低于算术运算符、关系运算符和逻辑运算符;,例如:,a,b?a:c,d?c:d,等价于,a,b?a:(c,d?c:d,),【,范例,4-6】,条件运算符和表达式的应用。,4.6,赋值运算符和表达式,4.6.1,赋值运算符,4.6.2,赋值表达式,4.6.3,赋值运算符的优先级和表达式,4.6.4,应用举例,4.6.1,赋值运算符,基本的赋值运算符为:,=,复合赋值运算符分别为:,+=,、,=,、*,=,、,/=,、,%=,、,=,、,&=,、,=,、,!=,4.6.2,赋值表达式,由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。,赋值表达式的一般格式为:变量,=,表达式,例如:,a=5;x=10+y;,对于赋值运算符说明如下:,赋值运算符“,=”,与数学中的等式形式一样,但含义不同,注意区别。,注意“,=”,与“,=”,的区别,,=,是用来判断运算符两边的数据是否相等,而,=,作用是将右边表达式的值赋给左边的变量。,如:,a=bc,与,a=b,b?a:b,等价于,max=,(,a,b?a:b,),4.6.4,应用举例,【,范例,4-7】,分析下面程序的运行结果。,01#include,02 void main(),03 ,04,int,a,b,c,;,05 a=b=c=1;,06 a+=b;/*,等价于,a=,a+b,*/,07 b+=c;,08 c+=a;,09,printf,(1)%dn,a,b?a:b,);/*,输出,a,b,二者的较大者*,/,10 (a=b=c)?,printf,(,AA):printf,(CC);,/*,若,a=b=c,成立则输出,AA,,否则输出,CC*/,11,printf,(n a=%,d,b,=%,d,c,=%,dn,a,b,c,);,4.6.4,应用举例,【,范例,4-8】,若,a=12,,试写出表达式,a+=a-=a*=a,运算后,a,的值。,a*=a,a=a*a,=12*,12,=144,a-=144,a=a-144,=144-144=0,a+=0,a=a+,0=0+0=0,4.7,自增、自减运算符,自增运算符:,+,和自减运算符:,-,。,有以下几种形式:,+i /*,前置运算,相当于,i=i+1*/,-i /*,前置运算,相当于,i=i-1*/,i+/*,后置运算,相当于,i=i+1*/,i-/*,后置运算,相当于,i=i-1*/,注 意,:,+,、,-,中间不能有空格;,自增自减运算符只能用于变量,是单目运算符;,它们都具有“右结合性”。,4.7,自增、自减运算符,若,i=0;,则,j=+i;,与,j=i+;,一样吗?,举例:,【,范例,4-9】,前置加和后置加的区别。,说明:,y=,i+j,;,应该如何理解?,在,C,中,词法分析遵循“最长匹配”原则。在确保有意义的条件下,从左到右尽可能多地将若干个字符组成一个运算符,所以,上面的表达式就等价于,y=(,i+)+j,。,4.8,逗号运算符和表达式,逗号运算符的功能是把两个表达式连接起来,使之构成一个逗号表达式。,逗号运算符在所有运算符中是级别最低的。,逗号表达式的一般形式为:,表达式,1,表达式,2,求解的过程是:先计算表达式,1,,再计算表达式,2,,最后整个逗号表达式的值就是表达式,2,的值,如:,x=(i=10,i*5),4.8,逗号运算符和表达式,【,范例,4-10】,逗号表达式的应用。,01#include,02 void main(),03 ,04,int,a=2,b=4,c=6,x,y;,05 y=(x=,a+b),(b+c,);,06,printf(y,=%,d,x,=%,d,y,x,);,07 ,4.8,逗号运算符和表达式,说明:,逗号表达式一般形式中的表达式,1,和表达式,2,也可以又是逗号表达式。因此可以把逗号表达式扩展为以下形式:表达式,1,,表达式,2,,,表达式,n,。,程序中使用逗号表达式,通常是要分别求逗号表达式内各表达式的值,并不一定要求整个逗号表达式的值。,并不是在所有出现逗号的地方都组成逗号表达式。,4.9,运算符的优先级,运算符的优先级共分为,15,级,如下表所示:,运算符类型,优先级,运算符,基本,1,().,:.*,*&(,引用,),单目,2,*,&new delete !+-,sizeof,+,算术,3,*,/%,4,+,移位,5,=,7,=!=,位逻辑,8,&,9,10,|,逻辑,11,&,12,|,条件,13,?:,赋值,1
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


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

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


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