第3章 运算符与表达式(精品).ppt

上传人:hyn****60 文档编号:71377094 上传时间:2023-02-03 格式:PPT 页数:20 大小:234.50KB
返回 下载 相关 举报
第3章 运算符与表达式(精品).ppt_第1页
第1页 / 共20页
第3章 运算符与表达式(精品).ppt_第2页
第2页 / 共20页
点击查看更多>>
资源描述

《第3章 运算符与表达式(精品).ppt》由会员分享,可在线阅读,更多相关《第3章 运算符与表达式(精品).ppt(20页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第第3章章 运算符与表达式运算符与表达式基本运算符及其表达式基本运算符及其表达式混合运算时数据类型的转换混合运算时数据类型的转换13.1 基本运算符及其表达式基本运算符及其表达式3.1.1 C语言运算符概述语言运算符概述运算运算:对数据的加工,被加工的数据称运算量或操作数。运算符运算符:是一种向编译程序说明一个特定的数学或逻辑运算的符号。表达式表达式:由运算符和运算量组成,用来描述运算加工的数据、加工顺序、具体操作。运算符优先级运算符优先级:表达式中优先级较高的运算符先于优先级较低的运算符进行运算,相同时依据运算符的结合性。运算符结合性:运算符结合性:有左结合性和右结合性两种。2C运算符算术运

2、算符:(算术运算符:(+-*/%+-+-*/%+-)关系运算符:(关系运算符:(=!=!=)逻辑运算符:(!逻辑运算符:(!&|&|)位运算符位运算符 :(:(|&|&)赋值运算符:(赋值运算符:(=及其扩展)及其扩展)条件运算符:(条件运算符:(?:?:)逗号运算符:(逗号运算符:(,)指针运算符:(指针运算符:(*&)求字节数求字节数 :(:(sizeofsizeof)强制类型转换:(类型)强制类型转换:(类型)分量运算符:(分量运算符:(.-.-)下标运算符:(下标运算符:()其它其它 :(:(()-()-)3学习运算符应学习运算符应注意注意:l运算符的功能。运算符的功能。l与运算量的关

3、系:与运算量的关系:运算量的个数运算量的个数(是几目或几元运算符是几目或几元运算符)。运算量的类型。运算量的类型。l运算符的优先级别运算符的优先级别(先高后低先高后低)。l结合方向结合方向(在运算量两侧运算符优先级相同时,则在运算量两侧运算符优先级相同时,则按结合方向顺序处理按结合方向顺序处理)。l表达式值的类型表达式值的类型(在不同类型的数据进行运算时,在不同类型的数据进行运算时,要进行数据类型的转换,要注意结果值的类型要进行数据类型的转换,要注意结果值的类型)。43.1.2 算术运算符及其表达式算术运算符及其表达式(1)基本算术运算符)基本算术运算符 +-*/%功能功能:加、减、乘、除、取

4、余。目数目数:都是双目运算符。优先级优先级:先乘除后加减。结合方向结合方向:自左至右。注意:注意:u%运算要求运算量必须为整型数据。运算要求运算量必须为整型数据。u/运算若运算量均为整型则结果也为整型(舍去小数)。运算若运算量均为整型则结果也为整型(舍去小数)。u+、-、*、/运算时,运算量有实数则结果为运算时,运算量有实数则结果为double型。型。u字符型数据可与数值型数据混合运算。字符型数据可与数值型数据混合运算。例 5/2 =5/2.0 =1%10 =5%1 =5.5%2例 5/2=2 5/2.0=2.5 1%10 =1 5%1 =0 5.5%2 ()5(2)自加、自减运算符)自加、自

5、减运算符+-功能功能:前置:前置:+i+i;-i-i;在使用;在使用i i之前之前i i值先加值先加/减减1 1。后置:后置:i+i+;i-i-;在使用;在使用i i之后,之后,i i值再加值再加/减减1 1。目数目数:均为单目运算符,且要求运算量为单个变量。优先级优先级:高于基本算术运算符的优先级。结合方向结合方向:右结合性。例 a=5;b=+a;a=5;b=+a;a=5;b=a+;a=5;b=a+;a=5;a=5;printf(printf(“%d%d”,+a,+a););a=5;a=5;printf(printf(“%d%d”,a,a+);+);a=3;b=5;c=(+a)*b;a=3;

6、b=5;c=(+a)*b;a=3;b=5;c=(a+)*b;a=3;b=5;c=(a+)*b;/b=6,a=6/b=6,a=6/b=5,a=6/b=5,a=6/6/6/5/5/c=20,a=4/c=20,a=4/c=15,a=4/c=15,a=4(3)正负号运算符)正负号运算符 +-功能功能:改变符号位。目数目数:单目。优先级优先级:与自加、自减运算符同级。结合方向结合方向:右结合性。则:j=-i+等价于 j=-(i+)62.算术表达式算术表达式定义定义:由算术运算符和括号把运算量连接起来的式子。表达式运算时,若一个运算符两侧的数据类型不同,先自动进行类型转换再进行运算。如:如:int i=1

7、;float f=1.0;则则 i +f1.0 +1.0 =2.073.1.3 赋值运算符及其表达式赋值运算符及其表达式1.简单赋值符及其表达式简单赋值符及其表达式功能功能:将一个数据(常量或表达式)赋给一个变量。一般形式一般形式:变量=表达式;目数目数:双目。结合方向结合方向:右结合性。注意注意:若赋值运算符两侧的数据类型不同,系统将自动进行数据类型的转换,把赋值号右边的类型转换成左边的类型。例 (1)x=3+5;(2)c=d+2;(3)a=(x=6)/(y=3);(4)int x;x=3.5;printf(”x=%d”,x);/输出:x=32.复合赋值符及其表达式复合赋值符及其表达式分类分

8、类:复合算术赋值符和复合位运算赋值符。一般形式一般形式:;注意注意:复合运算符是一个运算符,但功能上是两个运算符的组合。8例如:例如:a+=b;相当于相当于 a=a+b;a*=b;相当于相当于 a=a*b;a*=b+c;相当于相当于 a=a*(b+c);而不是而不是 a=a*b+c;练习练习:设设 int a=2;(1)计算表达式)计算表达式a+=a-=a*2的值的值(2)计算表达式)计算表达式a+=a-=a*=3的值的值 409练习练习:计算下列各个表达式的值计算下列各个表达式的值(1)x=y=z=3;(2)y=(x=8)+10;(3)x=(n=2)*(m=3);(4)a=(b=10)/(c

9、=2);注意:注意:l赋值运算符的优先级低于算术运算符、关系运算符和逻辑运算符。l赋值表达式具有右结合性。l赋值表达式中的表达式可以是一个赋值表达式。l赋值表达式左侧必须是变量,而不能为常量或表达式;31865103.1.4 关系运算符及其表达式关系运算符及其表达式关系运算符:关系运算符:=!=目数:目数:双目。结合方向结合方向:左结合性。优先级优先级:低于算术运算符,高于赋值运算符;且、=相同并高于=、!=;=、!=相同。关系表达式关系表达式:一般形式一般形式:;表达式的值表达式的值:是逻辑值“真”和“假”,TC中1表示“真”,0表示“假”注意注意:u应避免对实数作相等或不等的判断,因为实数

10、以近似值 表示,存在存储误差,可采用fabs(表达式)y;1 (2)x=z;0(3)y+zy)=z;1 (6)m=xyz;0 (7)n=x+(yz);5 若若a=0;b=0.5;x=0.3;则则 a=x278的值为的值为?例如例如:(1)表达式:)表达式:1.0/3.0*3.0=1.0 结果为结果为 0 可改写为:可改写为:fabs(1.0/3.0*3.0-1.0)1e-6(2)int x=2,y=3;表达式表达式 x=y 的值为?的值为?表达式表达式x=y的值为?的值为?30113.1.5 逻辑运算符及其表达式逻辑运算符及其表达式1.逻辑运算符:逻辑运算符:!&|逻辑非:单目、右结合性。逻辑

11、或、逻辑与:双目、左结合性。优先级优先级:!高于&,而&高于|。!高于算术运算符,&和|低于关系运算符。注意:注意:C语言中,运算量为非0,则认为“逻辑真”,运算量为0,则认为“逻辑假”。2.逻辑表达式逻辑表达式一般形式:一般形式:;其中表达式又可以为逻辑表达式,即形成嵌套。表达式的值表达式的值是式中各种逻辑运算的最后值。练习练习:假设:假设 x=3;y=6;求解下列表达式的值求解下列表达式的值 !x x&y x|y !x&y 4&0|2 53&2|8b)&(n=cd);后:后:m的值为的值为0,n的值为的值为 1。133.1.6 位运算符及其表达式位运算符及其表达式位运算位运算指参与运算的量

12、按二进制位进行运算,参与位运算的运算量以补码形式出现。1.&(按位与按位与):双目、左结合性。2.|(按位或按位或):双目、左结合性。3.(按位非(按位非):单目、右结合性(符号位也取反)。4.(按位异或):(按位异或):双目、左结合性。异或指当参与运算的两个数对应的二进制位相异时,结果为1,相同时,结果为0。5.(右移):(右移):双目、左结合性。注意:注意:位运算符的优先级参考P293附录。14注意注意:l条件运算符可嵌套,如:ab?a:cd?c:d;ab?a:(cd?c:d);l表示形式中的三个表达式的类型可以不同,条件表达式的值 取较高的类型。3.1.7 条件运算符及其表达式条件运算符

13、及其表达式一般形式一般形式:?:;运算规则运算规则:依据表达式1的值决定下一步求表达式2还是表达式3的值,并把该值作为整个表达式的值。目数目数:三目(唯一)。优先级优先级:低于关系运算符和算术运算符,但高于赋值运算符。结合方向结合方向:右结合性。例例 x?a:b;/x不成立不成立,表达式值为表达式值为b;x成立成立,表达式值为表达式值为a。xy?1:1.5;/xy时时值为值为1.0,xb?a:b;求解求解m的值?的值?思考:思考:(1)对于任意的)对于任意的a,b,m的值具有什么意义?的值具有什么意义?(2)怎样用)怎样用m表示表示a,b的最小值?的最小值?153.1.8 逗号运算符和逗号运算

14、符和sizeof运算符运算符1.逗号运算符逗号运算符,功能功能:将若干表达式组合成一个表达式。一般形式一般形式:表达式1,表达式2,表达式n;求解过程求解过程:先求表达式1,再求表达式2,依此类推,最后求 出表达式n的值。表达式的值表达式的值:等于表达式n的值。结合方向结合方向:左结合性。优先级优先级:低于赋值运算符。注意注意:l在C语言中常用逗号作分割符。如:int a=1,b,c;c=(a=3,b=4),a*b;printf(“%d,%d”,c,(a+b,a/b);会输出4,0。l但printf(“%d,%d”,(c,(a+b,a/b);是错误的。162.sizeof运算符运算符功能功能:

15、用于测试数据类型所占的字节数。一般形式一般形式:sizeof(变量名);或 sizeof(类型名);或 sizeof(表达式);目数目数:单目。结合方向结合方向:右结合性。注意注意:l它返回变量或类型标识符所代表的存储空间的长度。l当参数为表达式时,不对表达式求值,而只判断表达式值的 类型,并返回该类型占用的存储空间大小。例:例:int a=3;printf(“%d,%d,%d,%d”,sizeof(a),sizeof(int),sizeof(a=a+4),a);结果:结果:2,2,2,3173.2 混合运算时数据类型的转换3.2.1 类型隐式转换类型隐式转换不同数据类型的运算量混合运算时,由

16、编译系统自动完不同数据类型的运算量混合运算时,由编译系统自动完成,遵循以下规则:成,遵循以下规则:若参与运算的运算量类型不同,则先转换成同一类型再进行运算。转换按数据长度增加的方向进行,以保证精度不降低。所有浮点运算都以双精度进行,即float自动转换为double。char型和short型数据参与运算时,必须先转化为int型。赋值运算中,赋值号两边的运算量类型不同时,右侧的运算量的类型将转换为左侧运算量的类型。18double float long unsigned int char,short数据类型隐式转化规则示意图例如:int i;float f;double d;long k;求:1

17、0+a+i*f-d/k 10 +a +i *f -d /kintintdoubledoubledoubledoubledoubledouble193.2.2 类型显式转换类型显式转换功能功能:将一个表达式的值转换成所需类型。一般形式一般形式:(类型说明符)(表达式);例如:(float)(a+b)是显式的把a+b的值转换为float类型。注意注意:l类型说明符和表达式都必须加括号(单个变量可以不加括号)。l显式转换和隐式转换所得到的值是一个中间变量,并不会改变原变量的类型。l较高类型向较低类型转换时可能会发生精度损失问题。如:如:float f=6.25;printf(“f1=%d,f2=%f n”,(int)f,f);结果为:结果为:f1=6,f2=6.25000020

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com