C语言程序设计实例教程 教学课件 ppt 作者 潘志安 朱运乔 余小燕 第3章 运算符和表达式

上传人:E**** 文档编号:89423804 上传时间:2019-05-25 格式:PPT 页数:13 大小:1.72MB
返回 下载 相关 举报
C语言程序设计实例教程 教学课件 ppt 作者 潘志安 朱运乔 余小燕 第3章 运算符和表达式_第1页
第1页 / 共13页
C语言程序设计实例教程 教学课件 ppt 作者 潘志安 朱运乔 余小燕 第3章 运算符和表达式_第2页
第2页 / 共13页
C语言程序设计实例教程 教学课件 ppt 作者 潘志安 朱运乔 余小燕 第3章 运算符和表达式_第3页
第3页 / 共13页
C语言程序设计实例教程 教学课件 ppt 作者 潘志安 朱运乔 余小燕 第3章 运算符和表达式_第4页
第4页 / 共13页
C语言程序设计实例教程 教学课件 ppt 作者 潘志安 朱运乔 余小燕 第3章 运算符和表达式_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《C语言程序设计实例教程 教学课件 ppt 作者 潘志安 朱运乔 余小燕 第3章 运算符和表达式》由会员分享,可在线阅读,更多相关《C语言程序设计实例教程 教学课件 ppt 作者 潘志安 朱运乔 余小燕 第3章 运算符和表达式(13页珍藏版)》请在金锄头文库上搜索。

1、,第3章 运算符和表达式,3.1算术运算与算术表达式 3.2赋值运算与赋值表达式 3.3 C语言特有的运算和运算符,3.1.1 基本算术运算符 + 取正值运算,或作加法运算。如+3,5+3 - 取负值运算,或作减法运算。如-3,5 -3 * 乘法运算。如5*3 / 除法运算。如5/3 % 模运算,又称求余数运算。如5%3的值为2 其中,+、-运算符作正负运算时为单目运算(只有一个操作对象),作加减运算时为双目运算(有两个操作对象)。,3.1 算术运算与算术表达式,2019/5/25,2,3.1.2 算术表达式求值 用算术运算符和括号将运算对象(即操作数)连接起来的符合C语言语法规则的式子,称为

2、C算术表达式。 所谓表达式求值,就是按表达式中各运算符的运算规则和相应的运算优先级来获取运算结果的过程。对于表达式求值,一般要遵循的规则是: (1)按运算符的优先级高低次序执行。例如,先乘除后加减,如果有括号,则先计算括号。 (2)如果一个运算对象(或称操作数)两侧运算符的优先级相同,则按C语言规定的结合方向(结合性)进行。 例2-16:求下列算术常量表达式的值。 9 %(5 4)* 10 + 1 根据表达式求值顺序:,2019/5/25,3,3.1.3各类数值型数据间混合运算时的类型转换规则 对于每一种算术运算,一般要求参与运算的操作数的数据类型完全一致,经过运算后,其值也具有相同的数据类型

3、。 如果操作数的数据类型不一致,必须先将其中一种数据类型转化为另一种数据类型,使其一致,然后进行运算,得到相应类型的值。这种转换是由系统自动进行的。 对于其他任何两个基本类型的数据参与算术运算,按照运算结果不致损失精度或溢出的原则,转换的规则按图2-13所示。,2019/5/25,4,例:表达式中数据类型的自动转换。 已知变量i为基本整型,变量f 为单精度型,变量 d 为双精度型,变量 e 为长整型,有以下表达式: 10 + a + i * f d / e 试分析,该表达式运算过程中各数据类型的转换情况及最终结果的数据类型。 根据表达式中数据类型的转换规则:,2019/5/25,5,3.1.4

4、 强制类型转换 强制类型转换指将某一数据的数据类型转换为指定的另一种数据类型。 强制转换是用强制转换运算符进行的,强制转换表达式一般形式为: (类型名)(表达式) 强制转换运算符优先级比算术运算符高。例如: (double)a 将a转换成double类型) (int)(x + y) 将x + y的值转换成整型,即取整数部分 (float)x + y 将x转换成单精度型 例:求下面算术表达式的值。 x + a % 3 * ( int ) ( x + y ) % 2 / 4 设x = 2.5,a = 7,y = 4.7,上式的运算过程为:,2019/5/25,6,3.2.1 简单赋值运算及其表达式

5、 1.赋值运算符 所谓赋值,就是将某一表达式的值传送给指定变量的操作。 赋值运算符就是前面用过的赋值符号“=”。用赋值运算符连接起来的式子称为赋值表达式。赋值表达式的一般形式为: 变量 = 表达式 左边只能取变量,不能为常量或表达式;右边可取变量、常量或任意表达式。 例如:x = 5; y = (float)5 / 2;,3.2 赋值运算与赋值表达式,2019/5/25,7,2. 赋值表达式求值。 任何一个表达式都有一个值,赋值表达式也不例外。被赋值变量的值,就是赋值表达式的值。 例如,a = 5这个赋值表达式,变量a的值5就是表达式的值。 在混合运算表达式中,赋值运算的优先级低于算术运算;其

6、结合性为“从右向左”,这同算术运算相反,与大部分单目运算相同。 求表达式: x = y = z = 5 a+(x = 1)+(y = 2) 根据赋值运算规则:,2019/5/25,8,3.2.2赋值转换 如果赋值符两侧的数据类型不一致,在赋值时要进行数据类型转换。具体措施如下: (1)将实型数据赋值给整型变量,舍弃小数部分。 (2)将整型数据赋予实型变量,数值不变,但将以实数形式存放到实型变量中,即增加小数部分(小数部分的值为0)。 (3)将一个double 型数据赋值给float变量,如果没有超出float数据的表示范围,则截取double型数据的前面7位有效数字,存放到float型变量中。

7、 (4)将一个float 型数据赋给double 变量,数值不变,有效位数扩展到16位,然后赋值。 (5)不同整型之间数据相互赋值,视情况或截断,或扩展。,2019/5/25,9,3.2.3 复合赋值运算 (1)复合赋值运算符。 复合赋值运算符是由赋值运算符之前再加一个双目运算符构成的。 复合赋值运算的一般格式为: 变量 双目运算符 = 表达式 如:a += 3 读作“a加赋值3”,等价于:a = a + 3。 x %= 3 等价于:x = x % 3 x *= y + 8 等价于:x = x * (y + 8 ) 可以与“=”一起组成复合赋值运算的运算符为双目算术运算符和双目位逻辑运算符,共

8、10种:+= ,= , *= , /= , %= ,= , &= , |=,=。 (2)复合赋值运算求值。 表达式中,所有的复合赋值运算具有同简单赋值运算一样的优先级与结合性。复合赋值运算表达式的值即为最终赋给变量的值。如: a += 3 的值为a + 3 x %= 3 的值为 x % 3 x *= y + 8的值为x * (y + 8 ),2019/5/25,10,4变量初始化 定义变量时给变量赋予初值称为变量初始化。例如: int i = 1; 定义i为整型变量,初值为1。 float f = 2.25; 定义f为单精度变量,初值为2.25。 char c = a; 定义c为字符型变量,初

9、值为a。 也可使被定义的变量一部分初始化,如: int a, b, c = 1; 初始化在数据声明部分,而赋值在执行语句部分;赋值操作是一种运算,并且有相应的值,而初始化操作则不是。 例如,语句a = b = c = 3;是正确的,而int a = b = c = 3;则是错误的。 如果几个变量用同一值初始化,正确的写法为: int a = 3, b = 3, c = 3;,2019/5/25,11,1自增自减运算符 +自增运算符,使变量的值增1,如i +,使变量i的值增加1。 -自减运算符,使变量的值减1,如i -,使变量i的值减去1。 2自增及自减运算表达式 自增、自减运算有两种形式: 前

10、置运算:+i, -i。 后置运算:i+, i-。 两个运算符均为单目运算,优先级高于一般算术运算,与求负运算同级,结合性同大多数单目运算一样具有右结合性(从右向左结合)。,3.3 自增和自减运算及其表达式,2019/5/25,12,3自增自减运算表达式的值 先举例说明: main() int i = 1, j; j = +i; printf (“i = %d ,j = %d n“ , i, j ); 运算结果: i = 2, j = 2,2019/5/25,13,main() int i = 1, j; j = i+; printf (“i = %d ,j = %d n“ , i, j ); 运算结果: i = 2, j = 1,前置运算表达式的值:变量增加或减少1之后的值即为表达式的值。即先改变变量的值,后由变量值得到表达式的值。 后置运算表达式的值:变量改变前的原值即为表达式的值。即先由变量值得到表达式的值,后改变变量的值。,

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

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号