已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章运算符和表达式,3.1c语言运算符和表达式简介3.2赋值运算符和赋值表达式3.3算术运算符和算术表达式3.4关系运算符和关系表达式3.5逻辑运算符和逻辑表达式3.6逗号运算符和逗号表达式3.7条件运算符和条件表达式3.8位运算符和位运算表达式3.9sizeof运算符3.10运算符的优先级和结合性,3.1c语言运算符和表达式简介,运算符是告诉编译程序执行特定操作的符号。根据运算符所操作的操作数的数目,可把运算符分为单目运算符、双目运算符和三目运算符,另外还可以根据运算符的作用进行分类,运算符按作用分类如表3-1所示:,表3-1c语言运算符,在使用运算符的时候要注意以下几点:掌握运算符的功能。理解运算符和操作数之间的关系。这里分为两个方面:一方面是操作数的个数,另一方面是操作数的类型。区分运算符的优先级别。掌握结合性。注意运算结果的类型,尤其要注意当操作数的类型不同时结果值的类型。,表达式的定义:常量、变量和函数是一个表达式。运算符与上述各项的组合是一个表达式。运算符与表达式的组合是一个表达式。表达式可以看作是一种复合数据,它也具有数据的一般属性:值和类型。它们等于计算表达式结果的值类型。,3.2赋值运算符和赋值表达式,C语言的赋值运算符用“=”表示,由赋值运算符组成的表达式称为赋值表达式,它的一般形式如下:变量=表达式它的作用是把右侧表达式的值赋给左侧变量。,在使用赋值表达式的时候应注意以下几点:赋值表达式是右结合性运算符,其运算次序应从右至左,例如a=b=3,相当于a=(b=3),即先进行b=3的赋值运算,此时产生的新的表达式根据赋值运算的定义,可以赋给另一个变量,因此再进行a=b的赋值运算,最终a和b的值都为3,且都为整型。这也非常适用于变量的初始化。赋值表达式不是赋值语句,但根据c语言的规定,任何表达式的末尾加上分号后就构成语句,因此a=b=3;是一个语句。“=”跟数学上的表达不同,赋值符号没有等于的含义,在c语言中“=”表示等于。,3.3算术运算符和算术表达式,表3-4算术运算符,由算术运算符和括号将操作数连接起来的式子称为算术表达式。操作数可以包括常量、变量、函数等。,高()+、-*、/、%+、-低,图3-1算术运算符的优先级,自增(+)和自减(-)运算是c语言的一个特色。它们是单目运算符,具有右结合性。对于赋值表达式i=i+1可以写成i+或者+i,习惯上称为“后加加、先加加”。对于赋值表达式i=i-1可以写成i-或者-i,习惯上称为“后减减、先减减”。i+和+i本身都是一个表达式,其作用都相当于i=i+1,但两者在执行次序上是有差别的,“+”放在变量前面,那么在运算之前,变量先完成自增运算;如果“+”放在变量后面,那么自增运算是在变量参加表达式的运算后再运算。,C语言中,整型、实型、字符型的数据之间可以混合运算,在进行运算时,不同类型的数据要先转换成同一类型的数据然后再进行计算。自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以下规则。(1)若参与运算量的类型不同,则先转换成同一类型,然后进行运算。(2)转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int型转成long型后再进行运算。(3)所有的浮点运算都是以双精度进行的,即使仅含float型单精度量运算的表达式,也要先转换成double型,再作运算。(4)char型和short型参与运算时,必须先转换成int型。,3.4关系运算符和关系表达式,关系运算符用于比较运算。包括大于()、小于(=)、小于等于(y?x:zw?z:w等同于xy?x:(zw?z:w)条件运算符优先级高于赋值运算符,低于逻辑运算符和关系运算符,3.8位运算符和位运算表达式,所谓位运算是指进行二进制位的运算,其运算对象不是以一个数据为单位,而是对内存中存储数据的每个二进制位进行运算,每个二进制位只能存放0或1,因此位运算实际上是针对0和1的运算。在TC2.0中,位运算包括逻辑位运算和移位位运算,具体说明如表3-7,,表3-7位运算符,1逻辑位运算逻辑位运算的运算规则如下:(1)位逻辑与运算是对两个运算数据的对应二进制位进行与运算。当且仅当对应的两个位都是1时结果为1,否则为0。(2)位逻辑或运算是对两个运算数据的对应二进制位进行或运算。只要对应的两个位中有一个是1,结果就为1;只有当对应的两个位都是0时结果为0。(3)位逻辑异或运算是对两个运算数据的对应二进制位进行异或运算。若对应的两个位的值不同则结果为1;若对应的两个位的值相同则结果为0。(4)位逻辑非运算是把运算数据按二进制位按位取反。若操作数的某位二进制位是0则结果为1;若操作数的某位二进制位是1则结果为0。,表3-8逻辑位运算真值表,在使用位运算符的时候应注意以下几点:(1)位运算符中除位逻辑非()为单目运算符以外,均为双目运算符。(2)位运算符的操作数只能是整型或字符型的数据。(3)对于位逻辑与运算,根据运算法则可进一步得到,一个数的某二进制位与0相与该位结果为0,可以利用这点将数据中的某些位置零。例如,如果想将一个数a的某些位置0,只需找一个数b,其相应位为0,然后与a进行位逻辑与运算即可。类似的,一个数的某二进制位与1相与该位结果保持原值,可以利用这点保留一个数中某些指定位。例如,如果想将一个数a的某些位保留下来,只需找一个数b,其相应位为1,然后与a进行位逻辑与运算即可。(4)对于位逻辑或运算,根据运算法则可进一步得到,一个数的某二进制位与0相或该位结果保持原值,一个数的某二进制位与1相或该位结果为1,可以利用这点将一个数的某些特定位置1。例如,如果想将一个数a的某些位置1,只需找一个数b,其相应位为1,其余位为0,然后与a进行位逻辑或运算即可。(5)对于位逻辑异或运算,根据运算法则可进一步得到,一个数的某二进制位与0相异或该位结果保持原值,一个数的某二进制位与1相异或可使0变1,1变0。可以利用第二点将一个数的特定位翻转。例如,如果想将一个数a的某些位翻转,只需找一个数b,其相应位为1,然后与a进行位逻辑异或运算即可。,2移位位运算移位位运算的运算规则如下:位左移运算是将运算数据中的每个二进制位向左移动若干位,从左边移出去的高位部分被丢弃,右边空出的低位部分补0。位右移运算是将运算数据中的每个二进制位向右移动若干位,从右边移出去的低位部分被丢弃。对于无符号数来说,左边空出的高位部分补0。对于有符号数来说,如果符号位为0(即正数),则空出的高位部分补0。如果符号位为1(即负数),则空出的高位部分补0还是补1,与所使用的计算机系统有关。TurboC采用的补1的算法。,3.9sizeof运算符,sizeof运算符是一个求字节数运算符。它是一个单目运算符,可以返回常量、变量或数据类型的字节长度。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。它的一般形式为:sizeof(数据类型|变量|常量),sizeof的运算规则如下:(1)若操作数具有类型char、unsignedchar或signedchar,其结果等于1。ANSIC正式规定字符类型为1字节。(2)int、unsignedint、shortint、unsignedshort、longint、unsignedlong、float、double、longdouble类型的sizeof在ANSIC中没有具体规定,大小依赖于实现,一般可能分别为2、2、2、2、4、4、4、8、10。(3)当操作数是指针时,sizeof依赖于编译器。(4)当操作数具有数组类型时,其结果是数组的总字节数。(5)联合类型操作数的sizeof是其最大字节成员的字节数。结构类型操作数的sizeof是这种类型对象的总字节数。(6)如果操作数是函数中的数组形参或函数类型的形参,sizeof给出其指针的大小。,3.10运算符的优先级和结合性,C语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。c语言各运算符的优先级和结合性如表3-9所示:,关于表3-9的说明如下:优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。所有的优先级中,只有三个优先级是从右结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左结合。具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。“()”是与函数相关,“”与数组相关,而“”和“.”是取结构体成员。其次是单目运算符,所有的单目运算符具有相同的优先级,因此也可以说真正的运算符中它们具有最高的优先级。接下来是算术运算符,“*”、“/”、“%”的优先级是比“+”、“”高的。移位运算符紧随其后。其次的关系运算符中,“”、“=”要比“=”、“!=”高一个级别。所有的逻辑运算符都具有不同的优先级,单目运算符“!”和“”除外。逻辑位操作符的“与”比“或”高,而“异或”则在它们之间。跟在其后的“&”比“|”高。接下来的是条件运算符,这是唯一一个三目运算符。接下来是各种赋值运算符。最后是逗号运算符。,小结,本章介绍了运算符和表达式,主要内容如下:1运算符和表达式的定义运算符是告诉编译程序执行特定操作的符号;表达式是由数据和运算符按照c语言的语法规则连接起来的式子。2运算符与表达式的应用运算符根据所操作的操作数的数目,可分为单目运算符、双目运算符和三目运算符,根据运算符的作用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025新奥集团春季校园招聘100人笔试历年典型考点题库附带答案详解试卷3套
- 2025广东江门市江海区银信资产管理有限公司招聘5人笔试历年常考点试题专练附带答案详解试卷3套
- 2025山东淄博文昌湖创业投资管理有限公司招聘6人笔试历年典型考点题库附带答案详解试卷3套
- 副高公务员考试试题及答案
- 冬奥公务员考试试题及答案
- 定南公务员考试试题及答案
- 绰源公务员考试试题及答案
- 农村生活污水治理工程项目施工方案
- 北京市公务员考试备考试题及答案
- 片区城中村改造项目建议书
- 银行理财产品线上营销方案
- 2025年团章团员考试试题及答案
- 消毒供应基础知识
- 2025-2030中国啤酒出口竞争力分析及目标市场选择与壁垒突破策略报告
- 全国大学生职业规划大赛《无人机应用技术》专业生涯发展展示【高职(专科)】
- 2025四川省自然资源投资集团招聘30人笔试参考题库附带答案详解
- 2025年中远海运招聘1189人(含社招)笔试参考题库附带答案详解
- 输卵管切除术护理查房
- 2025年网格员相关知识考核试题
- 2025年重庆特种作业考试试题及答案
- 厨师保洁安全教育培训课件
评论
0/150
提交评论