常用的运算符和表达式讲解课件

上传人:风*** 文档编号:241672958 上传时间:2024-07-14 格式:PPT 页数:50 大小:255.69KB
返回 下载 相关 举报
常用的运算符和表达式讲解课件_第1页
第1页 / 共50页
常用的运算符和表达式讲解课件_第2页
第2页 / 共50页
常用的运算符和表达式讲解课件_第3页
第3页 / 共50页
点击查看更多>>
资源描述
常用的常用的运算符运算符和和表达式表达式常用的运算符和表达式案例目标:案例目标:1 1、掌握运算符、函数和表达式的使用方法;掌握运算符、函数和表达式的使用方法;2 2、掌握赋值语句的使用方法。掌握赋值语句的使用方法。案例目标:一、算术运算符一、算术运算符1 1、算术运算符:、算术运算符:+、-、*、/、%读为:加法、减法、乘法、除法、求余(或取模运读为:加法、减法、乘法、除法、求余(或取模运算)。算)。说明:说明:(1 1)“-”“-”减法运算,既是二元运算又是一元运算,例减法运算,既是二元运算又是一元运算,例如:一元运算,求负运算如:一元运算,求负运算 -5-5,-x-x等;二元运算等;二元运算a-b=ca-b=c。(2 2)“/”“/”除法运算,当参与运算的量均为整型时,除法运算,当参与运算的量均为整型时,结果也为整形,舍去小数;如果运算量中有一个是结果也为整形,舍去小数;如果运算量中有一个是实型,则结果为双精度实型。实型,则结果为双精度实型。(3 3)“%”“%”求余运算,要求参与运算的量均为整型。求余运算,要求参与运算的量均为整型。如,如,a%b,a%b,其值等于两数相除后的余数,符号与其值等于两数相除后的余数,符号与a a相同。相同。一、算术运算符例例1 1、main()main()int a,b,c,d;int a,b,c,d;float x,y,z;float x,y,z;a=1/3;a=1/3;/*/*两个整数相除,结果为整数,两个整数相除,结果为整数,a=0*a=0*/b=-10/(-3);b=-10/(-3);c=1%3;/*c c=1%3;/*c的值是的值是1 1,即即1 1除以除以3 3得余数得余数1*/1*/d=-10%(-3);d=-10%(-3);x=1.0/3;x=1.0/3;y=-10/3.0;y=-10/3.0;printf(“n%d,%dn”,a,b);printf(“n%d,%dn”,a,b);printf(“n%d,%dn”,c,d);printf(“n%d,%dn”,c,d);printf(“%f,%fn”,x,y);printf(“%f,%fn”,x,y);getch();getch();例1、2 2、算术表达式和运算符的优先级和结合性算术表达式和运算符的优先级和结合性(1)(1)算术表达式:算术表达式:算术表达式是由算术运算符连接常算术表达式是由算术运算符连接常量、变量、函数而成的式子。量、变量、函数而成的式子。注:单个常量、变量也是表达式。如:注:单个常量、变量也是表达式。如:a a3 3A+3A+3sin(x)sin(x)(x+y)*x-(a+b)/d(x+y)*x-(a+b)/d2、算术表达式和运算符的优先级和结合性(2 2)运算符的优先级:运算符的优先级:C C语言中,运算符的运算语言中,运算符的运算优先级共分为优先级共分为1515级,级,1 1级最高,级最高,1515级最低,优先级最低,优先级较高的先于优先级较低的进行运算,优先级相级较高的先于优先级较低的进行运算,优先级相同时,则按运算符的结合性规定的结合方向处理。同时,则按运算符的结合性规定的结合方向处理。(运算符的优先级见附录(运算符的优先级见附录3 3)如:如:+、-、*、/、%中中*、/、%的优先级高于的优先级高于+、-;*、/、%优先级为优先级为3 3;+、-优先级为优先级为4 4。(2)运算符的优先级:C语言中,运算符的运算优先级共分为153 3、自加、自减运算符自加、自减运算符运算符:运算符:+,-功能:使变量的值自加功能:使变量的值自加1 1或自减或自减1 1。例如:例如:+i+i与与i+i+的作用都相当于的作用都相当于i=i+1.i=i+1.-i -i与与i-i-的作用都相当于的作用都相当于i=i-1i=i-1。3、自加、自减运算符注:注:自加自加1 1,自减自减1 1运算符均为一元运算,都具有右结运算符均为一元运算,都具有右结合性,其优先级为合性,其优先级为2 2。+i+i与与i+i+的区别:的区别:如果初值如果初值i=1i=1,表达式表达式+i+i的值为的值为2 2,此时此时i i的值也为的值也为2 2;如果初值如果初值i=1i=1,表达式,表达式i+i+的值为的值为1 1,此时此时i i的值为的值为2 2;说明:说明:+i+i,-i-i:i i自加(减)自加(减)1 1后,再参与其它运算;后,再参与其它运算;i+i+,i-i-:先参与其它运算,后先参与其它运算,后i i值自加(减)值自加(减)1 1。注:例例2 2:main()main()int i=1,a,b=2;int i=1,a,b=2;a=+i*b;/*+a=+i*b;/*+在变量的前面,在变量的前面,i i先加先加1 1等等于于2 2,再参与表达式计算,与再参与表达式计算,与b b相乘。相乘。*/*/printf(“%dn”,a);printf(“%dn”,a);printf(“%dn”,i);printf(“%dn”,i);getch();getch();运行结果:运行结果:4 4 2 2例2:例例3 3:main()main()int i=1,a,b=2;int i=1,a,b=2;a=i+*b;/*+a=i+*b;/*+在变量的后面,在变量的后面,i i先参与表达先参与表达式计算,即与式计算,即与b b相乘,所以相乘,所以a=1*2=2.*/a=1*2=2.*/printf(“%dn”,a);printf(“%dn”,a);printf(“%dn”,i);printf(“%dn”,i);getch();getch();运行结果:运行结果:2 2 2 2例3:记忆方法:记忆方法:(1 1)运算符运算符+、-在变量的前面,表示变量先加在变量的前面,表示变量先加1 1或减或减1 1,然后再参加表达式的运算;然后再参加表达式的运算;(2 2)运算符运算符+、-在变量的后面,表示变量在变量的后面,表示变量先参加表达式的运算,然后再加先参加表达式的运算,然后再加1 1或减或减1 1。(3 3)+、-只影响它所在表达式的值;只影响它所在表达式的值;(4 4)无论无论+、-在变量前或在变量后,它所在变量前或在变量后,它所在的表达式计算结束后,它的值已经加上或减在的表达式计算结束后,它的值已经加上或减去去1 1了。了。记忆方法:二、关系运算符和关系表达式二、关系运算符和关系表达式关系运算符:把两个量进行比较的运算符。关系运算符:把两个量进行比较的运算符。1 1、关系运算符关系运算符(1 1)C C语言提供语言提供6 6种关系运算符:种关系运算符:,=,=,=,!=,!=小于,小于等于,大于,大于等于,等于,不等于小于,小于等于,大于,大于等于,等于,不等于二、关系运算符和关系表达式(2 2)优先级(运算次序)优先级(运算次序)系统规定:系统规定:,=,=优先级为优先级为6 6;=,!,!=优先级为优先级为7 7。2 2、关系表达式、关系表达式关系表达式:用关系运算符将两个表达式连接起来,关系表达式:用关系运算符将两个表达式连接起来,进行关系运算的表达式。进行关系运算的表达式。注:关系表达式的值显然应该是逻辑值(注:关系表达式的值显然应该是逻辑值(“真真”或或“假假”),),整数整数“1”“1”为为“真真”,“0”“0”为为“假假”。(2)优先级(运算次序)例例1 1:设设x1=1,x2=2,x3=3x1=1,x2=2,x3=3则:则:(1 1)求求x1x2x1x2的值的值main()main()int x1=1,x2=2,x3=3;int x1=1,x2=2,x3=3;printf(%dn,x1x2);printf(%dn,x1x2);getch();getch();分析:因为分析:因为x1=1,x2=2,x1=1,x2=2,所以所以x1x2x1x2不成立,它的不成立,它的值为值为0 0。例1:设x1=1,x2=2,x3=3则:(2 2)求(求(x1x2)!=x3x1x2)!=x3的值的值main()main()int x1=1,x2=2,x3=3;int x1=1,x2=2,x3=3;printf(%dn,(x1x2)!=x3);printf(%dn,(x1x2)!=x3);getch();getch();分析:分析:x1x2x1x2不成立,因此(不成立,因此(x1x2)x1x2)的值为的值为0 0,所所以以0 0!=x3=x3成立,它的值为成立,它的值为1 1。(2)求(x1x2)!=x3的值(3 3)x1x2x3x1x2x3的值的值main()main()int x1=1,x2=2,x3=3;int x1=1,x2=2,x3=3;printf(%dn,x1x2x3);printf(%dn,x1x2x3);getch();getch();分析:分析:x1x2x1x2成立,所以成立,所以x1x2x1x2的值为的值为1 1,导致导致1x31x3成立,所以它的值为成立,所以它的值为1 1。(3)x1x2x3的值例例2 2:设设x1=1,x2=2,x3=3,x1=1,x2=2,x3=3,表达式(表达式(x1x2)+x3x1x2)+x3是关是关系表达式吗?它的值是多少呢?系表达式吗?它的值是多少呢?main()main()int x1=1,x2=2,x3=3;int x1=1,x2=2,x3=3;printf(%dn,(x1x2)+x3);printf(%dn,(x1x2)+x3);getch();getch();上述表达式在此为算术表达式,而不是关系表达上述表达式在此为算术表达式,而不是关系表达式,其值为式,其值为4 4。例2:设x1=1,x2=2,x3=3,表达式(x1=1):(x=1)&(x2),!(x1),x|y(x2),!(x=1)&(x=1)&(x2)的值为?的值为?(2 2)!()!(x1)x=1)&(x=1)&(x2);printf(%dn,!(x1);printf(%dn,!(x=1”“x=1”同时又有同时又有“x2”;“x=1)&x=1)&(x2)x2)2、逻辑表达式说明:说明:(1 1)数学式子:数学式子:“1=x2”,“1=xb);printf(%d,%dn,a=5&(b=2),(x=2)&a=b);getch();例:求逻辑表达式的值案例分析:案例分析:第一行结果:第一行结果:b=2,所以所以!b的值为的值为0,导致,导致a*!b=0;a=2,所所以以!a=0,!a=1第二行结果第二行结果:|是或运算,是或运算,-1.5不为不为0,所以,所以x|-1.5的值为的值为1 a=2,b=2,所以所以ab不成立,导致不成立,导致ab的值为的值为0第三行结果:第三行结果:a=2,所以所以a=5不成立,即不成立,即a=5值为值为0,又因为,又因为&是是“与与”运算,所以运算,所以a=5&(b=2)的值为的值为0,因为,因为x=2是是赋值运算,赋值运算,x的值为的值为2,非,非0,所以,所以x=2的值为的值为1,a=2,b=2所以所以a=b成立,所以(成立,所以(x=2)&a=b的值为的值为1案例分析:四、赋值运算符四、赋值运算符1 1、赋值运算符:赋值运算符:=作用:将一个数据赋给一个变量。作用:将一个数据赋给一个变量。如:如:“x=12”“x=12”的作用是把常量的作用是把常量1212赋给变量赋给变量x x。注:注:也可以将一个表达式的值赋给一个变量。也可以将一个表达式的值赋给一个变量。赋值运算符具有右结合性;赋值运算符具有右结合性;赋值运算符的优先级为赋值运算符的优先级为1414。四、赋值运算符2 2、赋值表达式赋值表达式一般形式为:变量一般形式为:变量=表达式表达式说明:表达式是指由说明:表达式是指由C C的合法运算符连接常量、的合法运算符连接常量、变量、函数而成的合法式子。变量、函数而成的合法式子。2、赋值表达式3 3、赋值表达式的值赋值表达式的值 赋值表达式的值就是被赋值变量的值。赋值表达式的值就是被赋值变量的值。由于由于C C语言将语言将“=”“=”定义为赋值运算符,定义为赋值运算符,因此其值过程应按运算符的规定进行。因此其值过程应按运算符的规定进行。例如:假如例如:假如int a=12,b=5,c=3;int a=12,b=5,c=3;则则x=a/b*c x=a/b*c 的计算结果为的计算结果为x=6;x=6;赋值表达式赋值表达式a=b=c=13a=b=c=13的值为的值为1313。a=b=c=13a=b=c=13可理解为可理解为a=(b=(c=13);a=(b=(c=13);x=(a=10)+(b=20)x=(a=10)+(b=20)的值为的值为3030。其含义是把其含义是把1010赋给赋给a a,2020赋给赋给b b,再把,再把a,ba,b相加的相加的和赋给和赋给x x,故,故x x应等于应等于3030。3、赋值表达式的值4 4、类型转换类型转换 如果赋值运算符两边的数据类型不同,如果赋值运算符两边的数据类型不同,系统将自动进行类型转换,即把赋值号右边的类系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型:型换成左边的类型:(1 1)实型赋予整型,舍去小数部分。实型赋予整型,舍去小数部分。如:如:int x;int x;x=3.14159;x=3.14159;结果结果x=3.x=3.4、类型转换(2 2)整型赋给单、双精度变量时,数值不变,整型赋给单、双精度变量时,数值不变,但将以浮点数形式存储。但将以浮点数形式存储。如:如:float x;float x;x=98;x=98;结果结果x=98.000000 x=98.000000(2)整型赋给单、双精度变量时,数值不变,但将以浮点数形式存5 5、复合的赋值运算符、复合的赋值运算符 在赋值符在赋值符“=”“=”之前加上其它二元运算符可之前加上其它二元运算符可构成复合赋值符。如:构成复合赋值符。如:+=+=,-=-=,*=*=,/=/=,%=%=例如:例如:a-=15 a-=15 等价于等价于a=a-15a=a-15(1 1)将将“=”“=”左边的全部移到左边的全部移到“=”“=”右边表达式的左右边表达式的左边:边:=a-15=a-15(2 2)在在“=”“=”左边补上左边补上a a a=a-15 a=a-15 5、复合的赋值运算符 x*=y-17 x*=y-17 等价于等价于x=x*(y-17)x=x*(y-17)(1 1)将将“=”“=”右边的表达式加上括号。右边的表达式加上括号。x*=(y-17)x*=(y-17)(2 2)将将“=”“=”左边的全部移到左边的全部移到“=”“=”右边表达式右边表达式的左边:的左边:=x*(y-17)=x*(y-17)(3 3)在在“=”“=”左边补上左边补上x x x=x*(y-17)x=x*(y-17)x*=y-17 等价于x=x*(y-17)复合赋值符的优先级和赋值运算符相同(复合赋值符的优先级和赋值运算符相同(1414级)级)结合性也相同。结合性也相同。例例1 1:main()main()int x=3,y=5;int x=3,y=5;x*=x+y;x*=x+y;printf(“x=%dn”,x);printf(“x=%dn”,x);运行结果:运行结果:x=24x=24 复合赋值符的优先级和赋值运算符相同(14级)6 6、各类数值型数据之间的混合运算、各类数值型数据之间的混合运算 在在C C程序中,常常会出现不同类型变量混合程序中,常常会出现不同类型变量混合运算的情况,需将不同类型的数据转换成相同类运算的情况,需将不同类型的数据转换成相同类型的数据,再进行运算。型的数据,再进行运算。类型的转换有两种情况:类型的转换有两种情况:自动转换自动转换和和强制转换。强制转换。转换规则如图所示:转换规则如图所示:6、各类数值型数据之间的混合运算 在C程序中,常常会出自动转换发生在不同数据类型的数据混合运算时,自动转换发生在不同数据类型的数据混合运算时,由编译系统自动完成。规则如下:由编译系统自动完成。规则如下:(1 1)若参与运算量的类型不同,则先转换成同一类若参与运算量的类型不同,则先转换成同一类型,然后再进行运算;型,然后再进行运算;(2 2)转换按数据长度增加的方向进行,以保证精度转换按数据长度增加的方向进行,以保证精度不降低;不降低;(3 3)所有的浮点运算都是以双精度进行的,即使仅所有的浮点运算都是以双精度进行的,即使仅含含floatfloat单精度量运算的表达式,也要先转换成单精度量运算的表达式,也要先转换成doubledouble型,再计算;型,再计算;(4 4)charchar型和型和shortshort型参与运算时,先转换成型参与运算时,先转换成intint型。型。自动转换发生在不同数据类型的数据混合运算时,由编译系统自动完7 7、强制类型转换强制类型转换 (类型说明符)表达式类型说明符)表达式功能:把表达式的运算结果强制转换成类型说明功能:把表达式的运算结果强制转换成类型说明 符所表示的类型。符所表示的类型。说明:这里的小括号:(说明:这里的小括号:(),称为强制类型转换),称为强制类型转换 运算符。运算符。例如例如:(float)x :(float)x 把把x x转换为实型。转换为实型。(int)(a-b)(int)(a-b)把把a-ba-b的结果转换为的结果转换为整型。整型。7、强制类型转换例例2 2:实现保留小数点后:实现保留小数点后2 2位有效数字。位有效数字。main()main()float a=12.3456;float a=12.3456;a=(int)(a*100+0.5)/100.0;a=(int)(a*100+0.5)/100.0;printf(“a=%f”,a);printf(“a=%f”,a);getch();getch();程序运行结果为:程序运行结果为:a=12.350000a=12.350000例2:实现保留小数点后2位有效数字。案例分析:案例分析:1 1、由于(由于(intint)的作用,)的作用,(int)(a*100+0.5)(int)(a*100+0.5)运运算的结果为整型算的结果为整型12351235;2 2、除除100.0100.0运算时自动转换为实型运算时自动转换为实型12.35000012.350000;说明:说明:1 1、在强制类型转换时,只得到一个所需类型的在强制类型转换时,只得到一个所需类型的中间变量,原来变量的类型没有发生变化;中间变量,原来变量的类型没有发生变化;2 2、(intint)()(x+yx+y)和()和(intint)x+yx+y不同:前者是不同:前者是将将x x和和y y相加后,把结果转换为整型,而相加后,把结果转换为整型,而(intint)x+yx+y是把是把x x转换成整型后再与转换成整型后再与y y相加。相加。案例分析:例例3 3:main()main()float a=12.34;float a=12.34;int b;int b;b=(int)a;b=(int)a;printf(%d,%f,b,a);printf(%d,%f,b,a);getch();getch();程序运行结果:程序运行结果:1212,12.34000012.340000b b是是intint型,型,a a是是floatfloat类型并不改变。类型并不改变。例3:3 3、无论是强制转换或是自动转换,如果要转换无论是强制转换或是自动转换,如果要转换的量超过了转换后类型的表示范围,将出现溢出的量超过了转换后类型的表示范围,将出现溢出错误或不可预料的结果。错误或不可预料的结果。如:如:main()main()int a;int a;float b=123456;float b=123456;a=b;a=b;printf(a=%d,a);printf(a=%d,a);getch();getch();运行结果:运行结果:-7616-76163、无论是强制转换或是自动转换,如果要转换的量超过了转换后类五、逗号运算符和逗号表达式五、逗号运算符和逗号表达式1 1、逗号运算符:逗号运算符:“,”2 2、逗号表达式:逗号表达式:用逗号把两个表达式连接起来的式子,称为用逗号把两个表达式连接起来的式子,称为逗号表达式。逗号表达式。一般形式为一般形式为:表达式表达式1 1,表达式表达式2 2求值规则:从左向右依次计算两个表达式的值,求值规则:从左向右依次计算两个表达式的值,最后一个表达式是逗号表达式的值。最后一个表达式是逗号表达式的值。五、逗号运算符和逗号表达式3 3、优先级优先级 逗号运算符为左结合性,优先级逗号运算符为左结合性,优先级1515级。级。如:如:逗号表达式:逗号表达式:x=3,y=x+3x=3,y=x+3的值是的值是6 6;赋值表达式:赋值表达式:z=(x=3,y=x+3)z=(x=3,y=x+3)的值是的值是6 6;逗号表达式:逗号表达式:z=(x=3),(y=x+3)z=(x=3),(y=x+3)的值是的值是6 6。3、优先级说明:说明:(1 1)逗号表达式可以嵌套,即逗号表达式中的逗号表达式可以嵌套,即逗号表达式中的表达式表达式1 1和表达式和表达式2 2还可以是逗号表达式;还可以是逗号表达式;表达式表达式1 1,表达式表达式22,表达式表达式n n(2 2)表达式表达式n n的值是整个逗号表达式的值;的值是整个逗号表达式的值;说明:六、条件运算符六、条件运算符1 1、条件运算符:条件运算符:“?:?:”2 2、作用:作用:是是C C语言中唯一的一个三目运算符,它语言中唯一的一个三目运算符,它是对第一个表达式作真是对第一个表达式作真/假检测,然后根据结果假检测,然后根据结果返回两个表达式中的一个。返回两个表达式中的一个。六、条件运算符3 3、一般形式为:一般形式为:?2:3在运算中,首先对第一个表达式进行检验,如在运算中,首先对第一个表达式进行检验,如果为真,则返回表达式果为真,则返回表达式2 2的值;如果为假,则返的值;如果为假,则返回表达式回表达式3 3的值。的值。例如:例如:a=(b0)?b:-ba=(b0)?b:-b当当b0b0时,时,a=ba=b;当;当b b不大于不大于0 0时,时,a=-ba=-b。3、一般形式为:4 4、条件运算符的优先级:条件运算符的优先级:优先级为优先级为1313级,高于赋值、逗号运算符,级,高于赋值、逗号运算符,低于其他运算符。低于其他运算符。例如:例如:(1)mn?x:a+3(1)mn?x:a+3等价于:等价于:(mn)?(x):(a+3)(m=10&b(2)a+=10&b-20?a:b-20?a:b等价于:(等价于:(a+=10&b-20)?a:ba+=10&b-20)?a:b4、条件运算符的优先级:5 5、结合性、结合性 条件运算符具有右结合性。条件运算符具有右结合性。当一个表达式中出现多个条件运算符时,当一个表达式中出现多个条件运算符时,应该将位于最右边的问号与离它最近的冒号配对,应该将位于最右边的问号与离它最近的冒号配对,并按这一原则正确区分各条件运算符的对象。并按这一原则正确区分各条件运算符的对象。5、结合性例如:例如:wx?x+w:xy?x:ywx?x+w:xy?x:y与与wx?x+w:(xy?x:y)wx?x+w:(xy?x:y)等价等价与与(wx?x+w:xy)?x:y)(wx?x+w:xy)?x:y)不等价不等价例如:案例:案例:P28 P28 例例2.72.7P29 P29 例例2.82.8案例:
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


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

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


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