运算符与表达式2.ppt_第1页
运算符与表达式2.ppt_第2页
运算符与表达式2.ppt_第3页
运算符与表达式2.ppt_第4页
运算符与表达式2.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章 运算符和表达式 n3.1 c语言运算符和表达式简介 n3.2 赋值运算符和赋值表达式 n3.3 算术运算符和算术表达式 n3.4 关系运算符和关系表达式 n3.5 逻辑运算符和逻辑表达式 n3.6 逗号运算符和逗号表达式 n3.7 条件运算符和条件表达式 n3.8 位运算符和位运算表达式 n3.9 sizeof运算符 n3.10 运算符的优先级和结合性 3.1 c语言运算符和表达式简介 运算符是告诉编译程序执行特定操作的 符号。根据运算符所操作的操作数的数目 ,可把运算符分为单目运算符、双目运算 符和三目运算符,另外还可以根据运算符 的作用进行分类,运算符按作用分类如表3- 1所示: 运算符名称运算符 算术运算符+ , - , * , / , % , +, - 关系运算符, = , 赋值运算符简单赋值 运算符= 复合算术赋值 运算符+=,-=,*=,/=,%= 复合位运算赋值运算 符 是一个语语句。 (3)“=”跟数学上的表达不同,赋值赋值 符号没有等于的含义义 ,在c语语言中“=”表示等于。 3.3 算术运算符和算术表达式 算术运算符说明举例 +加法或正值2+3,+3 -减法或负值5-3,-5 *乘法2*4 /除法10.5/3,5/3 %模运算3%2,25%(- 2) +变量自增1i+,+i -变量自减1j-,-j 表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, 运算符名称例子功能优先级 位逻辑非aa按位取反 低 &位逻辑与a&ba与b按位与 位逻辑异或aba与b按位异 或 |位逻辑或a|ba与b按位或 位右移aba右移b位 表3-7 位运算符 1 逻辑位运算 逻辑位运算的运算规则如下: (1) 位逻辑与运算是对两个运算数据的对应二进制位进行与运 算。当且仅当对应的两个位都是1时结果为1,否则为0。 (2) 位逻辑或运算是对两个运算数据的对应二进制位进行或运 算。只要对应的两个位中有一个是1,结果就为1;只有当对 应的两个位都是0时结果为0。 (3) 位逻辑异或运算是对两个运算数据的对应二进制位进行异 或运算。若对应的两个位的值不同则结果为1;若对应的两个 位的值相同则结果为0。 (4) 位逻辑非运算是把运算数据按二进制位按位取反。若操作 数的某位二进制位是0则结果为1;若操作数的某位二进制位 是1则结果为0。 ababa&ba|bab 0011000 0110011 1001011 1100110 表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,与所使用的 计算机系统有关。Turbo C采用的补1的算法。 3.9 sizeof运算符 sizeof运算符是一个求字节数运算符。它 是一个单目运算符,可以返回常量、变量 或数据类型的字节长度。sizeof操作符以字 节形式给出了其操作数的存储大小。操作 数可以是一个表达式或括在括号内的类型 名。操作数的存储大小由操作数的类型决 定。它的一般形式为: sizeof(数据类型 | 变量 | 常量) sizeof的运算规则如下: (1)若操作数具有类型char、unsigned char或signed char ,其结果等于1。ANSI C正式规定字符类型为1字节。 (2)int、unsigned int 、short int、unsigned short 、 long int 、unsigned long 、 float、double、long double类型的sizeof 在ANSI C中没有具体规定,大小依 赖于实现,一般可能分别为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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论