2.2运算符与表达式(教案)-《C语言程序设计》同步教学(电子工业出版社)

2024-07-10
| 6页
| 103人阅读
| 68人下载
普通

内容正文:

教案用纸 第 2 周 总第 4 次 学时:2 教学班级: 课程:C语言程序设计 授课教师:刘畅 课题: 第2章 程序中的数据 2.2运算符与表达式 2.3数据类型转换及数据的溢出误差 教学方法:讲授、启发 教具:常规教具 教学目标:使学生掌握各种运算符及其表达式 教学重点:各种运算符及其表达式的运算规则 教学难点:各种运算符的运算顺序,位运算符 主要教学内容: 第2章 程序中的数据 2.2 运算符与表达式 2.2.1 算术运算符与算术表达式 2.2.2 自增、自减运算符(++、--) 2.2.3 赋值运算符与赋值表达式 2.2.4 关系运算符与关系表达式 2.2.5 逻辑运算符与逻辑表达式 2.2.6 位运算符 2.2.7 其他运算符 2.3 数据类型转换及数据的溢出误差 2.3.1 类型转换概述 2.3.2 自动类型转换 2.3.3 赋值类型转换 2.3.4 强制类型转换 2.3.5 数据的溢出和误差 课后回顾: 沈阳职业技术学院教案用纸 四个一: 提问:(1)变量定义的一般格式 (2)变量赋值的一般格式 导入:在实际运算过程中,我们经常会遇到加、减、乘、除运算,那么在计算机中都有什么样的运算符呢?这节课我们来学习运算符与表达式以及数据类型的转换。 正文: 2.2 运算符与表达式 2.2.1 算术运算符与算术表达式 1.算术运算符 C语言中算术运算符共有5个,分别为:+(加)、-(减)、*(乘)、/(除)、%(取余,或取模)。其运算优先级别,结合方式如表2-5所示。 (1)算术运算符为双目(需要两个操作数)运算符,结合方式均为从左到右。 (2)求余运算符“%”又称取模运算符,要求其两侧必须为整型数,它的作用是取两个整型数相除的余数,余数的符号与被除数的符号相同。 例如9%4结果是1;若-9%4的结果为-1;若9%-4的结果是1。 (3)除法运算符“/”。当两个操作数都是整数时,运算的结果是整数(舍去小数取整),即表示“整除”;如果参加运算的两个数中有一个是实数,则结果是实数。例如9/4结果是2;若9.0%4的结果为2.25。 2.2.2 自增、自减运算符(++、--) ++(自增)、--(自减)运算符是C语言中使用方便且效率很高的两个运算符,它们都是单目运算符。这两个运算符有前置和后置两种形式。前置就是指运算符在操作数的前面,例如++x和--x;后置就是指运算符在操作数的后面。 运算规则如下: 若只对某变量自增(自减)而不参与其他赋值运算,结果都是该变量本身自增(自减)1。 若某变量自增(自减)的同时还要参加其他运算,则前缀运算是自变量先自增(减)后再参与表达式运算,后缀运算是自变量先参与表达式运算后再自增(减)。 使用自增或自减运算符只适合于整型或字符型变量,而不能用于常量或表达式,例如(x+y)++和++9都是不合法的。 2.2.3 赋值运算符与赋值表达式 C语言允许在赋值运算符“=”之前加上其他运算符,构成复合赋值运算符。C语言共有10种复合赋值运算符,如表2-5所示。 1.赋值表达式格式 赋值表达式是由赋值运算符“=”将一个变量和表达式连接起来的式子,其一般格式为: ( 变量=表达式 ) 即将“=”右边表达式的值赋给左边的变量,表达式可以是符合C语言语法的各种表达式。 2.2.4 关系运算符与关系表达式 1.关系运算符 关系运算符用于比较两个运算对象的大小。关系运算符有6种:<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、==(等于)、!=(不等于)。C语言提供的关系运算符如表2-5所示。 2.关系表达式 关系表达式的一般形式为: ( 表达式 关系运算符 表达式 ) 关系表达式的值是逻辑值,即0或1。例如,表达式5 >3结果为1。 2.2.5 逻辑运算符与逻辑表达式 1.逻辑运算符 逻辑运算符用来对运算对象进行逻辑操作,逻辑运算符有三种:&&(逻辑与)、||(逻辑或)和!(逻辑非)。C语言提供的逻辑运算符及其功能如表2-5所示。 逻辑表达式运算结果也有两种:“真”或“假”。在C语言中用1表示“真”,用0表示“假”。 2.逻辑表达式 逻辑表达式的一般形式为: ( 表达式 逻辑运算符 表达式 ) 逻辑表达式的值也是逻辑值,即0或1。 3.优先级 常用的C语言运算符优先级别如图2-6所示。 图2-6 C语言运算符优先级别 2.2.6 位运算符 C++中保留了低级语言中的二进制位运算符,以提高计算的灵活性与效率。位运算分为移位运算与按位逻辑运算。移位运算包括按位左移(<<)和按位右移(>>),按位逻辑运算包括按位求反(~)、按位与(&)、按位或(|)和按位异或(^)。位运算符的优先级别和结合方式如表2-5所示。 位运算符是对其操作数按二进制形式逐步地进行逻辑运算或移位运操作的,运算对象为char、short、int等类型数据,但不能是浮点型数据。 2.2.7 其他运算符 1.条件运算符和条件表达式 条件运算符是由字符“?”和“:”组成的,要求有三个运算对象,是C语言中唯一的三目运算符。条件运算符的优先级高于赋值运算和逗号运算符,而低于其他运算符,其结合方式为自右至左。 条件表达式是由条件运算符将运算对象连接起来的式子,其一般格式为: ( 表达式 1 ? 表达式 2 : 表达式 3 ) 条件表达式的求解过程为:先求解表达式1,若表达式1的值为1(真),则求解表达式2,并将其作为整个表达式的值;如表达式1的值为0(假),则求解表达式3,并将其作为整个表达式的值。 2.逗号运算符和逗号表达式 在C语言中,符号“,”除了做分隔符外,还可以作为运算符将若干个表达式连接在一起形成逗号表达式。 逗号表达式的一般格式为: ( 表达式 1, 表达式 2,…, 表达式 n ) 逗号表达式的运算规则是:先求解表达式1,再求解表达式2,依次求解到表达式n,最后一个表达式的值就是整个逗号表达式的值。逗号运算符的优先级最低,结合方式为自左至右。 2.逗号运算符和逗号表达式 在C语言中,符号“,”除了做分隔符外,还可以作为运算符将若干个表达式连接在一起形成逗号表达式。 逗号表达式的一般格式为: ( 表达式 1, 表达式 2,…, 表达式 n ) 逗号表达式的运算规则是:先求解表达式1,再求解表达式2,依次求解到表达式n,最后一个表达式的值就是整个逗号表达式的值。逗号运算符的优先级最低,结合方式为自左至右。 3.括号运算符和括号表达式 圆括号运算符“()”的优先级最高,用它将某些运算符和运算对象括起来以后,这些括起来的运算符和运算对象要优先运算。 例如,s=(a=1,b=2,c=3,c=a*(b+c));,尽管运算符“*”的优先级比运算符的“+”的优先级高,但由于(b+c)使用了圆括号运算符,故应优先运行b+c。在这个语句中,使用了两个“()”运算符,应先计算最里面的圆括号,再计算外面的。如果两个“()”并列排列,则应遵循由左向右的优先原则。 4.求字节运算符sizeof sizeof的定义格式如下: ( sizeof (数据类型名) 或 sizeof (变量名) ) 其功能为测定某一种类型数据所占存储空间长度,结果是该类型在内存中所占的字节数。括号内可以是该数据类型名或是该类型的变量名。 2.3 数据类型转换及数据的溢出误差 2.3.1 类型转换概述 1.不同数据类型的差异 数据类型的差异体现在存储数据的范围和精度上,存储数据的范围越大、精度越高,该类型越“高级”。 如double比float高级,实型比整型高级,整数中的长型比短型高级,无符号比有符号高级。 2.数据类型转换产生的效果 (1)数据类型级别的提升与降低:短数据转换成长数据;整数转换成实数;signed型转换成unsigned型。 (2)符号位扩展与零扩展。为保持数值不变,整型短数据转换成整型长数据时将产生符号位扩展与零扩展。 2.3.2 自动类型转换 图2-8 自动类型转换的规则 自动类型转换是指在C语言中,不同的数据可以出现在同一个表达式中。在进行运算时,C语言自动进行必要的数据类型转换,以完成表达式的求值。当与一个运算符相关联的两个运算对象的类型不同时,其中的一个运算对象的类型将转换成与另一个运算对象的类型相同,转换的优先顺序如图2-8所示。 自动类型转换的原则是“精度不降低”,低级数据自动转换成高级数据,就能够保证这一点。 2.3.3 赋值类型转换 赋值运算时,如果赋值运算符两侧的类型(指基本类型)不一致,系统自动将表达式转换成变量的类型存到变量的存储单元中,转换的情况有以下几种。 (1)整型赋给实型变量时,数值上不发生任何变化。例如:float x; x=24; (2)实型数据赋给整型变量时,小数部分将舍弃。例如:int x; x=25.48; (3)短的有符号整型赋给长整型变量时,需要进行符号位扩展。 (4)短的无符号整型赋给长整型变量时,需要进行0扩展。 (5)长整型数据赋给短整型变量时,有可能溢出。例如:char x=324;溢出x值为’d’。 (6)同长度有符号整型数据赋给无符号整型数据时,数据将失去符号位功能。 (7)同长度有符号整型数据赋给有符号整型数据时,数据将得到符号位功能。 2.3.4 强制类型转换 C语言还允许用户根据自己的需要将运算对象的数据类型转换成所需要的数据类型,这就是强制类型转换。强制类型转换的运算格式如下: ( (类型)表达式 或 类型(表达式) ) 强制类型转换用于不能自动转换的情况。 2.3.5 数据的溢出和误差 1.数据的溢出 因为C语言定义的各种数据类型长度有限,所以有时为不同数据类型赋值或运算时,可能会发生数据溢出现象,即所得数据值超出所能存放的最大值,结果为非正确的数据。 不同数据类型的数据存储值都有下限和上限,所以在定义数据类型时要注意运算的数值的大小,来决定数据类型的定义。 2.实数的误差 整数存储除了溢出以外是没有误差的。然而实型数据由于是用有限的存储单元存储较大范围的实数,有效数字是有尾数限制的,在实际计算和引用中会有很多问题。 例如,如果将一个非常大的数加上一个非常小的数,小数就会被忽略。或是在计算时,小数的有效位加上一个数是有效的,如果无效位上加上一个数还是无效的。 小结: 本讲主要讲述了C语言的运算符,不同的运算符具有不同的优先级和结合性。表达式是由运算符连接常量、变量、函数所组成的式子。每个表达式都有一个值,表达式求值按运算符的优先级和结合性所规定的顺序进行。数据类型是可以转换的,转换的方式有两种:自动类型转换和强制类型转换。 备 注 案例:通过思考题引入我们这节课所学习的问题。 重点:通过实例讲解算术表达式的计算。 难点:自增、自减运算中前缀与后缀的区别。 难点:赋值运算符的优先级别。 注意:关系运算符的结果只有两个:真值或假值。 难点:逻辑运算符与其它运算符混合时如何进行运算。 启发:条件运算符可以进行条件的选择,与我们哪个基本语句比较相似。 为以后学习选择语句做铺垫。 重点:数据转换在现实中的应用。 学科网(北京)股份有限公司 $$

资源预览图

2.2运算符与表达式(教案)-《C语言程序设计》同步教学(电子工业出版社)
1
2.2运算符与表达式(教案)-《C语言程序设计》同步教学(电子工业出版社)
2
2.2运算符与表达式(教案)-《C语言程序设计》同步教学(电子工业出版社)
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。