C语言第六课运算符与表达式.ppt

上传人:tia****nde 文档编号:12706226 上传时间:2020-05-14 格式:PPT 页数:19 大小:373.34KB
返回 下载 相关 举报
C语言第六课运算符与表达式.ppt_第1页
第1页 / 共19页
C语言第六课运算符与表达式.ppt_第2页
第2页 / 共19页
C语言第六课运算符与表达式.ppt_第3页
第3页 / 共19页
点击查看更多>>
资源描述
C语言程序设计,第六课运算符与表达式,湛江师范学院陈其嶙alinxx,6.1运算符与表达式的相关概念,到现在为止,我们了解了C语言中各种数据类型的特点及其表示形式。那么如何对这些数据进行处理和计算呢?通常当我们要进行某种计算时,都要首先列出算式,然后求解其值。在程序设计中,表达式是计算求值的基本单位。简单的说,表达式是由运算符(例如:+-*/)、操作数(可以是常数、变量等等)和括号组成。执行表达式所规定的运算,所得到的结果值便是表达式的值。例如a+b,x/y都是表达式。C语言中定义了丰富的运算符,如算术运算符,关系运算符、逻辑运算符等等。有些有些运算行需要两个操作数,使用形式为:操作数1运算符操作数2这样的运算符称为二元运算符(或双目运算符)。另一些运算符只需要一个操作数,称为一元运算符(或单目运算符)。,6.2运算符与表达式注意的问题,1、表达式的值5+102、运算符的优先级6+5*43、运算符的结合性10/5*24、变量的值inta=5;a=a+2;,6.3算术运算符/表达式,和其它高级语言一样,C语言分别用+、-、*、/表示四则运算的加、减、乘、除运算符。C语言基本的算术运算符如表所示。,注意事项:1)加、减运算符,如果当作正、负符号使用时,就不是加减运算符了,正、负号的优先级要高于乘、除运算符。2)除法运算,如果两个操作数是整数,则是整除运算,其结果是整数。例如5/3=1,-5/3=-1,舍弃了小数部分。如果两个操作数中有实数,则此运算符变为实数相除运算,结果是实数。例如:1.0/3.0=0.33333。3)什么是取模运算呢?在C语言中,取模运算符为%,表达式x%y是x除以y所得的余数。如果x正好能被y整除的话,那么结果是0。例如:45%5=0;45%10=5。取模运算要求两个操作数必须是整型数,其结果也是整数。下面这个式子在C语言中是非法的:12.4%6.7,例:数学表达式转C表达式,s(s-a)(s-b)(s-c),s*(s-a)*(s-b)*(s-c),a*b/(2*a),5.0/9.0*(f-32),6.3赋值操作(赋值表达式),“赋值”使用最基本的运算符-赋值运算符,符号是“=”,它的作用是将一个表达式的值赋值给一个变量。例如,我们见过的“a=3“,它的作用是将常量3赋值给变量a。当然,我们也可以将一个表达式的值赋给一个变量。例如:a=b*c*d*d-345;注意:这里的赋值符号“=”和数学上的等号是不一样的。赋值符号“=”表示将右边的数值赋给左边的变量,在一次赋值之后,还可以进行多次赋值。比如:a=3*6;a=b;,6.3赋值运算符,除了我们在普通赋值运算符“”外,赋值运算符还允许一些变形-复合赋值运算符。比如:a+=3,在赋值号“”前加一个其它运算符“+”就构成了复合运算符“+=”。其意义等价于:a=a+3。我们还可以使用下面这几种复合运算符。+=、-=、*=、/=、%=比如:a-=3(等价于a=a-3)x*=y+8(等价于x=x*(y+8),赋值表达式变量表达式计算赋值运算符右侧表达式的值将赋值运算符右侧表达式的值赋给左侧的变量将赋值运算符左侧的变量的值作为表达式的值,赋值表达式的值,例6-1复合算术赋值运算符,#includevoidmain()intx,y,z;z=(x=7)+(y=3);printf(%d,%d,%dn,x,y,z);x=y=z=x+2;printf(%d,%d,%dn,x,y,z);x*=y-3;printf(%d,%d,%dn,x,y,z);,x=7,y=3,z=x+y,z=x+2,y=z,x=z,x=x*(y-3),6.4自增、自减运算符/表达式,在程序设计时,为了控制程序的流程,经常要进行大量循环计数的运算“j=j+1“、”j=j-1“。为了简化程序的输入,C语言专门提供了变量值为1、减1的特殊运算符“自增”和“自减”运算符“+“,”-”。自增、自减运算符是C语言的一个特色,它的作用是将变量值加1或减1,例如:+i;-i;(在使用i之前,先对i的值进行加(减)1操作)i+;i-;(在使用i之后,再对i的值进行加(减)1操作),自增、自减表达式的值,粗看起来,+i和i+的作用都是i=i+1,但是它们在程序中的作用却是不同的。+i是先执行i=i+1,再使用i的值。而i+是先使用i的值,再执行i=i+1。例如,下列语句中i的初始值都是5,执行结果k的值却不不同。k=+i;先执行i=i+1,i的值为6,再赋值给k,k=6。k=i+;先使用i的值为5,把它赋值给k,k=5,再执行i=i+1。注意:1、自增、自减运算符都只能用于变量,不能用于常量或表达式。例如:+5、(3*s)+都是非法的。2、用于自增、自减的变量只能是整型、字符型和指针型变量,不能是实型变量。3、自增、自减运算符满足处右向左的结合律。,/*程序:ex06_02.c演示i+和+i的区别*/#includevoidmain()inti,n;i=5;/给i赋初值n=i+;/改为n=+i后重新运行本程序printf(i=%d,n=%dn,i,n);,表达式1,表达式2,,表达式n先计算表达式,然后计算表达式,,最后计算表达式n的值,并将表达式n的值作为逗号表达式的值.逗号运算符的优先级最低,从左向右a=(3+5,4*6)a=3+5,4*6,a=24a=8,6.5逗号运算符/表达式,6.6数据类型的转换,当一个运算符具有不同类型的运算对象时,必须进行类型转换。这种类型转换的一般如下:(1)低级类型向高级类型转换数据类型由低级向高级的排列顺序是:charintlongfloatdouble在数据转换中,低级类型服从高级类型,并进行相应转换。在运算中可以将所有的char型转换成int型数据,所有的float数据可以转换为double数据。例如,下列语句:inta;a=15+a;printf(a的值是:%dn,a);结果是112,(2)赋值运算的类型转换在对赋值表达式求解过程中,如果赋值运算符两过的数据类型不一致,赋值时需要进行类型转换。这一转换工作由C编译系统自动完成,转换的原则是以赋值运算符“”左边变量的类型为准,即将“”右边表达式的值转换成“”左边变量的类型一致。,例:自动类型转换(赋值运算),doublex;x=1;,x=?,intai;ai=2.56;,ai=?,强制类型转换运算符(类型名)表达式优先级同+,从右向左(double)3(int)3.8(double)(5/2)(double)5/2,3.032.02.5,6.6强制数据类型转换,6.7运算符优先级,()-+-(类型名)*/%+-=+=-=*=/=%=,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


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

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


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