资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
运算符与表达式,运算符与表达式,程序设计中采用具有一定功能的运算符将运算对象连接起来的符合语言的表达式,以及按语言的合法运算规则来实现对数据的处理。 表达式是由常量、变量、函数和运算符组合起来的式子。在C语言中将一个常量、变量和表达式都称之为表达式。,运算符与表达式,语言的运算符按其所在表达式中参与运算的操作数的数目分为三类:,所有的表达式必有值。 表达式求值,按其运算符的优先级和结合性。 优先级较高的先于优先级较低的进行运算。,单目运算符、双目运算符和三目运算符,运算符、表述式以及表达式的计算,赋值运算符、赋值表达式,从右至左(右结合),所有运算符中倒数第二,仅高于逗号运算符, (双目运算符,赋值号),v = e,等号左边必须是变量,等号右边e为任意表达式。 表达式:常量(数值)、简单变量、表达式。,P59,如:a=23 a=b a=b+c,运算符、表述式以及表达式的计算,赋值运算符、赋值表达式,#include main() int a,b,c; a=b=c=5; b=a=a+1; a=b+(c=2); printf(a=%dn,a); printf(b=%dn,b); printf(c=%dn,c);,错误用法: int a=b=c=5;,n,表示换行,运算符、表述式以及表达式的计算,赋值运算符、赋值表达式,v = e 表达式,类型转换原则: 若 v 与 e 值的类型相同时,原样赋值; 若 v 与 e 值的类型不相同时,将 e 值的类型转成与 v 的类型,再赋值。,#include void main() int a,b; float x=2.5; a=x+1.0; x=2*a; b=3.634; printf(a=%dn,a); printf(x=%.2fnb=%dn,x,b); ,P59,运算符、表述式以及表达式的计算,从左至右(左结合),*、% 同级,+、- 同级。前者优先后者。,、(求余,求两个的余数) 双目运算符。,1、所有的乘号“*”不能省略; 2、描述为整体时,须加括号(),且只能用圆括号。 3、整除整,必取整,小数位截去。 4、作求余%运算时,两边的操作数必须为整型。即,只能对整型类型的数据求余。,算术运算符、算术表达式,P55,运算符、表述式以及表达式的计算;,【整型除整型其结果必为整型】 如阅读下列程序,写出其运行结果: void main() int a=4,b=5,c,d; float x; c=a/b; d=7/3*5; x=5/2*2.3; printf(n%d,%d,%.3f,c,d,x); ,使用注意事项,使用注意事项,运算符、表述式以及表达式的计算,【不同类型数据间的混合运算】 算术运算符满足左结合(从左至右依此运算),若两个操作数类型相同,运算结果类型为操作数的类型。 若两个操作数类型不同,运算结果类型为操作数类型较高的类型。, long unsigned ,char, short,double,int,高,低,float,P54,例:void main( ) float x; x = 5 ; printf ( “%dn” , x %3 ); ,将自动类型转换,x % 3 错误,应改写成 ( int ) x % 3,采用强制转换,强迫x的类型转换为整型。,算术表达式中约定:求余时两边必为整。,运算符、表述式以及表达式的计算;,强制类型转换运算符,P56,用强制类型运算符将一个表达式的类型转换为所需类型.,(类型名)(表达式),( int ) x % 3 );,运算符、表述式以及表达式的计算,算术运算符、算术表达式,数学表达式,转换为合法的C语言表达式,sqrt (x*x+y*y)/(x*y)或 sqrt(x*x+y*y)/x/y),常用的数学函数P371:三角函数(sin(),cos()等)、根号函数 (sqrt())、绝对值函数(fabs()或abs())、求ex的函数(exp( x)),求xy的函数(pow(x,y))等,数学函数的函数名必须用小写。,编写程序时,若程序中要用到数学函数时,必须加头文件:math.h #include “math.h”,运算符、表述式以及表达式的计算,算术运算符、算术表达式,例4.10 输入三角形的三边长,根据下列公式求三角形面积。(假设输入的三边能构成三角形),#include #include void main() int a,b,c; float p,s; scanf(%d%d%d, ,P86,从键盘上输入一个三位整数,求该数各位数之和。如:输入583,求 5+8+3=?。,#include void main() int a,x,y,z,sum; scanf(%d, ,算法思想: 采用算术运算符除 /、求余%。,运算符、表述式以及表达式的计算;,复合的赋值运算符、赋值表达式 P62,从右至左(右结合),与赋值运算符同级,赋值号与其它运算符组合,且赋值号在后。 如:、,v = e 代表任意算术运算符 ( 、等),v = e 等价于 v = v ( e ),注意括号,运算符、表述式以及表达式的计算;,复合的赋值运算符、赋值表达式,例如:a + =b/ 3 x % = y + 3 b*=4,#include void main() int a=5,b=3,c; c=b+=a-=b+=1; a=c%b; printf(a=%db=%dc=%dn,a,b,c); ,等价于 a = a +( b/3 ) 等价于 x = x % (y + 3 ) 等价于 b=b * 4,运算符、表述式以及表达式的计算;,自增、自减运算符、表达式,从右至左(右结合),单目运算符高于所有的双目运符,+、- (单目运算符),自增、自减运算符的运算是使变量的值自增1或自减1。,P57,运算符、表述式以及表达式的计算;,设有变量i,则与自增、自减运算符组成下列四种形式的表达式: +i i自增1,其表达式+i的值为i自增后的值。 -i i自减1,其表达式-i的值为i自减后的值。 i+ i自增1,其表达式i+的值为i自增前的值。 i- i自减1,其表达式i-的值为i自减前的值。,自增、自减运算符、表达式,#include void main() int i=4,j,a; j=+i; a=j+; j=-i; j=a+; printf(%d,%d,%d, -a,i,j-); ,运算符、表述式以及表达式的计算;,自增、自减运算符、表达式,i j a,4,5 5,6 5,4 4,5 6,#include void main() int a=4,b=5,c,d; c=a+b; d=a+b+; printf(n%d,%d,a,b); printf(n%d,%d,c,d); ,运算符、表述式以及表达式的计算;,6,6 9,10,编译约定:P59 表达式i+j 等价于(i+)+j。,自增、自减运算符、表达式,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号