




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第第3章章 运算符与表达式运算符与表达式基本运算符及其表达式基本运算符及其表达式混合运算时数据类型的转换混合运算时数据类型的转换23.1 基本运算符及其表达式基本运算符及其表达式3.1.1 C语言运算符概述语言运算符概述运算运算:对数据的加工,被加工的数据称运算量或操作数。运算符:运算符:是一种向编译程序说明一个特定的数学或逻辑运算的符号。表达式:表达式:由运算符和运算量组成,用来描述运算加工的数据、加工顺序、具体操作。运算符优先级:运算符优先级:表达式中优先级较高的运算符先于优先级较低的运算符进行运算,相同时依据运算符的结合性。运算符结合性:运算符结合性:有左结合性和右结合性两种。例 :
2、5+2-3 左结合性左结合性 x=y=z 右结合性右结合性3C运算符算术运算符:(算术运算符:(+ - + - * * / % + - / % + -)关系运算符:(关系运算符:( = != = !=)逻辑运算符:(!逻辑运算符:(! & |& |)位运算符位运算符 :(:( | & | &)赋值运算符:(赋值运算符:(= = 及其扩展)及其扩展)条件运算符:(条件运算符:(?:?:)逗号运算符:(逗号运算符:(, ,)指针运算符:(指针运算符:(* * & &)求字节数求字节数 :(:(sizeofsizeof)强制类型转换:(类型)强制类型转
3、换:(类型)分量运算符:(分量运算符:(. -. -)下标运算符:(下标运算符:()其它其它 :(:(( ) -( ) -)4学习运算符应学习运算符应注意注意:l 运算符的功能。运算符的功能。l 与运算量的关系:与运算量的关系:运算量的个数运算量的个数(是几目或几元运算符是几目或几元运算符)。运算量的类型。运算量的类型。l 运算符的优先级别运算符的优先级别(先高后低先高后低)。l 结合方向结合方向(在运算量两侧运算符优先级相同时,则在运算量两侧运算符优先级相同时,则按结合方向顺序处理按结合方向顺序处理)。l 表达式值的类型表达式值的类型(在不同类型的数据进行运算时,在不同类型的数据进行运算时,
4、要进行数据类型的转换,要注意结果值的类型要进行数据类型的转换,要注意结果值的类型)。53.1.2 算术运算符及其表达式算术运算符及其表达式1. 算术运算符算术运算符(1)基本算术运算符)基本算术运算符 + - * / %功能功能:加、减、乘、除、取余。目数目数:都是双目运算符。优先级优先级:先乘除后加减。 * / % 高于+ -结合方向结合方向:自左至右。注意:注意:u%运算要求运算量必须为整型数据。运算要求运算量必须为整型数据。u/运算若运算量均为整型则结果也为整型(舍去小数)。运算若运算量均为整型则结果也为整型(舍去小数)。u+、-、*、/运算时,运算量有实数则结果为运算时,运算量有实数则
5、结果为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 ()6(2)自加、自减运算符)自加、自减运算符 + -功能功能:前置:+i;-i;在使用i之前i值先加/减1。后置:i+;i-;在使用i之后,i值再加/减1。目数目数:均为单目运算符,且要求运算量为单个变量。优先级优先级:高于基本算术运算符的优先级。结合方向结合方向:右结合性。例 a=5; b=+a; a=5; b=+a; a=5; b=a+;
6、 a=5; b=a+; a=5; printf(“%d”,+a a=5; printf(“%d”,+a); ); a=5; printf(“%d”,a a=5; printf(“%d”,a+); +); a=3;b=5;c=(+a) a=3;b=5;c=(+a)* *b; b; a=3;b=5;c=(a+) a=3;b=5;c=(a+)* *b;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)正负号运算符)正负号运算符 + -功能:功能:改变符号位。目数:目数:单目。优先级:优先
7、级:与自加、自减运算符同级。结合方向:结合方向:右结合性。则:j=-i+ 等价于 j=-(i+)72. 算术表达式算术表达式定义定义:由算术运算符和括号把运算量连接起来的式子。表达式运算时,若一个运算符两侧的数据类型不同,先自动进行类型转换再进行运算。如:如:int i=1; float f=1.0; 则则 i + f1.0 + 1.0 = 2.083.1.3 赋值运算符及其表达式赋值运算符及其表达式1. 简单赋值符及其表达式简单赋值符及其表达式功能功能:将一个数据(常量或表达式)赋给一个变量。一般形式一般形式: 变量=表达式目数:目数:双目。结合方向:结合方向:右结合性。注意注意:若赋值运算
8、符两侧的数据类型不同,系统将自动进行数据类型的转换,把赋值号右边的类型转换成左边的类型。 实型数据赋值给整型变量 int i=2.52 整型数据赋值给实型变量 float i=1 字符型数据赋值给整型变量 int i=A 整型数据赋值给字符型变量 char i=305 i=2i=1.0i=65i=2例 (1) x=3+5 (2) c=d+2 (3) a=(x=6)/(y=3) (4) w=sin(a)+sin(b)92. 复合赋值符及其表达式复合赋值符及其表达式分类:分类:复合算术赋值符和复合位运算赋值符。一般形式:一般形式: 等价于:= 注意:注意:复合运算符是一个运算符,但功能上是两个运算
9、符的组合。例如:例如: 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的值的值 10练习练习:计算下列各个表达式的值计算下列各个表达式的值(1)x=y=z=3; (2)y=(x=8)+10;(3)x=(n=2)*(m=3);(4)a=(b=10)/(c=2);注意:注意:l赋值运算符的优先级低于算术运算符、关系运算符和逻辑运算符。如:x=32l赋值表达式具有右结
10、合性。如:x=y=6/2l赋值表达式中的表达式可以是一个赋值表达式。l赋值表达式左侧必须是变量,而不能为常量或表达式;3=x x+y=2031865113.1.4 关系运算符及其表达式关系运算符及其表达式关系运算符:关系运算符: = = !=目数:目数:双目。结合方向结合方向:左结合性。优先级优先级:低于算术运算符,高于赋值运算符; 且、 、=相同并高于= = 、!=; = = 、!=相同。关系表达式关系表达式:一般形式一般形式:;表达式的值表达式的值:是逻辑值“真”和“假”,TC中1表示“真”,0表示“假”注意注意:u应避免对实数作=或!=的判断,因为实数以近似值表示,存在存储误差,可采用f
11、abs(表达式)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的值为?的值为?(3)int a=0,b=1; if(a=b) printf(“a equal to b”); else printf(“a no
12、t equal to b”);30123.1.5 逻辑运算符及其表达式逻辑运算符及其表达式 C语言中,没有逻辑类型数据,如果运算量为非0,则认为“逻辑真”, 运算量为0,则认为“逻辑假”。1. 逻辑运算符:逻辑运算符:! & |逻辑非:单目、右结合性。 int a=6,b=4; 则 !a 为 0 , !(ab)为 1逻辑或、逻辑与:双目、左结合性。 int a=6,b=4,c=2; 则a&b 为1,(a1)为0 a|b为1,(ab)|(bc)为1, (ab)|(bc)为0 优先级优先级:!高于&,而&高于|。!高于算术运算符,&和|低于关系运算符。2.
13、逻辑表达式逻辑表达式一般形式:一般形式:; 其中表达式又可以为逻辑表达式,即形成嵌套。表达式的值表达式的值是式中各种逻辑运算的最后值。练习练习:假设:假设 x=3;y=6;求解下列表达式的值求解下列表达式的值 !x x&y x|y !x&y 4&0|2 53&2|8b)&(n=cd); 后:后: m的值为的值为 , n的值为的值为 。01143.1.6 位运算符及其表达式位运算符及其表达式位运算位运算指参与运算的量按二进制位进行运算,参与位运算的运算量以补码形式出现。位逻辑运算符位逻辑运算符1.& (按位与按位与):双目、左结合性。2.| (按位
14、或按位或):双目、左结合性。3. (按位非(按位非):单目、右结合性(符号位也取反)。4.(按位异或):(按位异或):双目、左结合性。异或指当参与运算的两个数对应的二进制位相异时,结果为1,相同时,结果为0。移位运算符移位运算符5.(右移):(右移):双目、左结合性。15例:main( ) int a=10, b=8; printf(%d %dn, , a|b); printf(%d %dn, ab, ); 输出结果:输出结果:16例:例:main( ) int a=257,b; b=a&255; printf(%d %dn, a); printf(%d %dn, b); 输出结果:输
15、出结果:17main( ) int a=10, b=2; printf(%d %dn, , ); 输出结果:输出结果:18注意:注意: 位运算符的优先级参考位运算符的优先级参考P286附录附录C。 位运算符的运算对象只能是位运算符的运算对象只能是整型数据整型数据或或字符型数据字符型数据,不能是实型数据,不能是实型数据 运算对象一律按二进制运算对象一律按二进制补码补码参加运算,参加运算,并并按按位位进行运算进行运算 位运算的结果是一个位运算的结果是一个整型数据整型数据19注意注意:l条件运算符可嵌套,如: y=x0?1:x0?1:(x2?1:1.5 3.22?1:33.1.7 条件运算符及其表达
16、式条件运算符及其表达式一般形式一般形式:?:;运算规则:运算规则:依据表达式1的值决定下一步求表达式2还是表达式3的值,并把该值作为整个表达式的值。目数:目数:三目(唯一)。优先级:优先级:低于算术运算符和关系运算符,但高于赋值运算符。结合方向:结合方向:右结合性。 例如:例如:int a=3,b=5,m; m=ab?a:b;求解求解m的值?的值?思考:思考:(1)对于任意的)对于任意的a,b ,m的值具有什么意义?的值具有什么意义?(2)怎样用)怎样用m表示表示a,b的最小值?的最小值?20213.1.8 逗号运算符和逗号运算符和sizeof运算符运算符1.逗号运算符逗号运算符 ,功能功能:
17、将若干表达式组合成一个表达式。:将若干表达式组合成一个表达式。一般形式一般形式:表达式:表达式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
18、+b,a/b);会输出会输出4, 0。l但但printf(“%d,%d”,(c,(a+b,a/b);是错误的。是错误的。222. sizeof运算符运算符功能功能:用于测试数据类型所占的字节数。:用于测试数据类型所占的字节数。一般形式一般形式: sizeof(变量名变量名) ; 或或 sizeof(类型名类型名); 或或 sizeof(表达式表达式);目数目数:单目。:单目。结合方向结合方向:右结合性。:右结合性。注意注意:l 它返回变量或类型标识符所代表的存储空间的长度。它返回变量或类型标识符所代表的存储空间的长度。l 当参数为表达式时,不对表达式求值,而只判断表达式值的当参数为表达式时,不
19、对表达式求值,而只判断表达式值的 类型,并返回该类型占用的存储空间大小。类型,并返回该类型占用的存储空间大小。例:例:int a=3;printf(“%d,%d,%d,%d”,sizeof(a),sizeof(int),sizeof(a=a+4),a);结果:结果:2,2,2,3233.2.1 类型隐式转换类型隐式转换不同数据类型的运算量混合运算时,由编译系统自动完成,不同数据类型的运算量混合运算时,由编译系统自动完成,遵循以下规则:遵循以下规则: 若参与运算的运算量类型不同,则先转换成同一类型再若参与运算的运算量类型不同,则先转换成同一类型再进行运算。进行运算。 转换按数据长度增加的方向进行,以保证精度不降低。转换按数据长度增加的方向进行,以保证精度不降低。 所有浮点运算都以双精度进行,即所有浮点运算都以双精度进行,即float自动转换为自动转换为double。 char型和型和short型数据参与运算时,必须先转化为型数据参与运算时,必须先转化为int型。型。 赋值运算中,赋值号两边的运算量类型不同时,右侧的赋值运算中,赋值号两边的运算量类型不同时,右侧的运算量
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纸制品行业生产计划与库存控制策略考核试卷
- 计算机控制系统设计与实现考核试卷
- 航天器空间环境对材料影响分析与测试考核试卷
- 挂毯制作中的品牌故事与情感营销考核试卷
- 自然语言处理基础考核试卷
- 通信设备录音及扩音功能维修考核试卷
- 拍卖行拍卖业务全球竞争力提升战略规划考核试卷
- 西药批发商药品批发业务中的企业风险防范与控制考核试卷
- 煤炭价格影响因素研究考核试卷
- 研发中心租赁质保及技术支持补充协议
- T-CCA 035-2024 现制现售饮品添加糖量及食品安全操作指南
- 自动驾驶系统安全性与可靠性-第1篇-深度研究
- 编制QC成果的要点分析
- 2025年全球及中国钢制螺旋锥齿轮行业头部企业市场占有率及排名调研报告
- 品牌推广案例考核试卷
- 融资担保行业2024年信用回顾与2025年展望 -新世纪
- 2024危重症患儿管饲喂养护理-中华护理学会团体标准课件
- 风电项目安全培训课件
- 《从技术走向管理》课件
- 1.1细胞生活的环境课件-2024-2025学年高二上学期生物人教版选择性必修1
- 中药灌肠治疗盆腔炎
评论
0/150
提交评论