资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第三章 运算,3.1运算符介绍,语言运算符有以下几类:,1.算术运算符 (见下节),2.关系运算符 =,9.求字节数符sizeof 12 其它 (),1/10,3.2 算术运算符和算术表示式,基本算术运算符:,+,(二元加运算符),-,(二元减,或一元负运算符),*,(乘法运算符),/,(除法运算符),当进行+、-、*、/混合运算时,各运算符之间必须要有一定优先次序和结合方向。语言中要求+、-、*、/之间优先次序以下:-、*/、+-。,同一行运算符优先级相等,运算时按优先级从高到低,同级从左至右标准进行,如:a*b+c/d-e、(a*b)+(c/d)-e、a*b/c、a*-c+b/d,a,b,c,d,e等称为,操作数,,它能够是常量或变量,由操作数和运算符以及圆括号按一定规则组成式子称为,表示式,。由数值型操作数和算术运算符组成表示式称为,算术表示式,。,2/10,模运算符,模运算符是一个二元运算符。,优先级和结合方向同*和/。,要求两侧操作数均为整型数据。且nm结果为n/m余数部分,即n被m除余数。,余数符号与被除数一致。如:73结果为1,42结果为0,23结果为2,-2%3=?2%-3=?-2%-3=?。,3.2 算术运算符和算术表示式,3/10,3.3赋值运算符和赋值表示式,赋值运算符,=,:一个二元运算符,其左操作数只能为变量,而右操作数能够为常量、变量或表示式。,赋值表示式普通形式为:=,先对“=”右端表示式求值,将结果赋给变量。,赋值表示式能够出现在其它表示式中:(a=1)+(b=3)*4-(c=5),赋值表示式右侧也能够是一个赋值表示式:a=(b=5),赋值表示式中“=”结合次序是“从右至左”。,算术运算符优先级高于赋值运算符。比如:,a=b=c=d=1,a=5+(b=3),a=(b=4)+(c=6),a=b=4+(c=6),复合赋值运算符:a,+=,b,a,-=,b,a,*=,b,a,/=,b,a,%=,b,4/10,3.4,运算符,算术运算符,+,和,-,使参加运算对象值增1或减1,也是赋值运算。,单目运算符,运算对象能够是整型或实型变量,不能是常量或表示式,比如:+a,a+,a-,-a,+3,(i+j)-,它们在算术运算符中优先级和结合方向以下:,+-(一元负)从右至左,*/%从左至右,+-(二元减)从左至右,其组成形式有以下四种:前缀(+a、-a),后缀(a+、a-),运算后a值相同,表示式值不一样。,5/10,main(),int a=1,b=1;,printf(“+a=%d,b+=%dn”,+a,b+);,printf(“a=%d,b=%dn”,a,b);,printf(“-a=%d,b-=%dn”,-a,b-);,printf(“a=%d,b=%dn”,a,b);,运行结果:,考虑:i初值为3,表示式(i+*+i+i-*-i)=?,3.4,运算符,+a=2,b+=1,a=2,b=2,-a=1,b-=2,a=1,b=1,6/10,3.5 混合运算和类型转换,当运算符两边操作数类型不一样时,其中一个操作数就要经过类型转换以和另一个操作数类型相一致,然后才能进行运算。,变换操作数采取,就高不就低,标准。即级别低操作数先被转换成和级别高操作数含有同一类型,然后再进行运算,结果数据类型和级别高操作数相同。各种类型级别高低以下所表示:高 double float,long,unsigend,低 int char,short,比如:10+a+5*1.5-10/3,强制类型转换表示式:(类型)表示式),比如:(int)(1.5+2.3)=?,(int)1.5+2.3=?,7/10,类型转换也发生在赋值运算符两边,且不论赋值运算符右边表示式结果类型为何,一律转换为左边变量类型,然后再赋给左边变量。,类型提升,:是将较低级类型转换为较高级类型,经过增加一些二进制位来完成,精度没有损失。,类型下降,:是将较高级类型转换为较低级类型,要截断和舍入二进制位,通常会引发精度损失。,3.5 混合运算和类型转换,8/10,main(),char c1,c2,c3;,int i1,i2,i3;,float f1,f2,f3;,c1=x;c2=1000;c3=6.02e23;,printf(“%c%c%cn”,c1,c2,c3);,i1=x;i2=1000;i3=6.02e23;,printf(“%d%d%dn”,i1,i2,i3);,f1=x;f2=1000;f3=6.02e23;,printf(“%f%f%fn”,f1,f2,f3);,运行结果为:,3.5 混合运算和类型转换,x ,120 1000.0,120.000000 1000.000000 60017271895229000000.000000,9/10,3.6 逗号运算符和逗号表示式,逗号表示式组成形式以下:,表示式1,表示式2,表示式n,将多个表示式连接起来组成逗号表示式。,逗号表示式求解过程是:先求解表示式1,再求解表示式2,最终求解表示式n,且表示式n值就是该逗号表示式值。,逗号表示式结合次序:自左向右。,逗号运算符优先级在全部运算符中是最低。,比如:a=(3+5,3*5,5/3),a=3+5,3*5,5/3,(i=3,i+,+i,i+5),10/10,
展开阅读全文