《C语言程序设计》谭浩强版-教学教案k5

上传人:nt****6 文档编号:35872819 上传时间:2018-03-21 格式:DOC 页数:13 大小:106KB
返回 下载 相关 举报
《C语言程序设计》谭浩强版-教学教案k5_第1页
第1页 / 共13页
《C语言程序设计》谭浩强版-教学教案k5_第2页
第2页 / 共13页
《C语言程序设计》谭浩强版-教学教案k5_第3页
第3页 / 共13页
《C语言程序设计》谭浩强版-教学教案k5_第4页
第4页 / 共13页
《C语言程序设计》谭浩强版-教学教案k5_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《《C语言程序设计》谭浩强版-教学教案k5》由会员分享,可在线阅读,更多相关《《C语言程序设计》谭浩强版-教学教案k5(13页珍藏版)》请在金锄头文库上搜索。

1、宜宾学院教案宜宾学院教案C C 语言程序设计语言程序设计_ _课程课程周次周次第 3 周,第 1 次课 章节章节 名称名称第三章 数据类型、运算符与表达式 3.7 各类数值型数据间的混合运算 3.8 算术运算符和算术表达式3.9 赋值运算符和赋值表达式 授课授课 方式方式课堂讲授( ) ;实验课( ) ;其他方式( )教教 学学 时时 数数2 学时教学教学 目的目的1、掌握 C 语言数据类型基本概念。 2、掌握不同类型数据之间的转换规则。 3、掌握运算符与表达式的规则和使用方法。 教学教学 重点重点 与难与难 点点教学重点与难点: 1、C 语言数据类型基本概念。 2、不同类型数据之间的转换规则

2、。 3、运算符与表达式的规则和使用方法。参考参考 资料资料C 语言程序设计教程 谭浩强 高等教育出版社 C 高级实用程序设计 王士元 清华大学出版社 C 程序设计及应用 李盘林、孟宪福著 高等教育出版社 C 语言程序设计 王树义 钱达源 编著 大连理工大学出版社 C 语言程序设计课程教案 何明儒教授等 四川大学计算机学院授课授课 内容内容 与过与过 程程步骤一:复习上次课内容用运算符和括号将运算对象(数据)连接起来的、符合 C 语法规则的 句子称为表达式。步骤二:讲授新课3.7 各类数值型数据间的混合运算 整型(包括 int,short,long) 、浮点型(包括 float,double)可

3、以混 合运算。在进行运算时,不同类型的数据要先转换成同一类型,然后进行 运算.其转换规则如下:double float 高 long unsigned 低 intchar,short 上述的类型转换是由系统自动进行的时间 分配约 5 分钟约40 分钟3.8 算术运算符和算术表达式3.8.1 运算符简介 的运算符有以下几类: (1)算术运算符 (+ - * / %) (2)关系运算符 (!) (3)逻辑运算符 (!|) (4)位运算符 ( |) (5)赋值运算符 (及其扩展赋值运算符) (6)条件运算符 (?:) (7)逗号运算符 (,) (8)指针运算符 (*和) (9)求字节数运算符() (

4、10)强制类型转换运算符( (类型) ) (11)分量运算符(-) (12)下标运算符( ) (13)其他 (如函数调用运算符() )3.8.2 算术运算符和算术表达式 (1)基本的算术运算符: (加法运算符,或正值运算符。如:、) (减法运算符,或负值运算符。如:、) * (乘法运算符。如:*) (除法运算符。如:) (模运算符,或称求余运算符,两侧均应为整型数据,如: 的值为) 。 (2) 算术表达式和运算符的优先级与结合性基本的算术运算符: 用算术运算符和括号将运算对象(也称操作数)连接起来的、符合语 法规则的式子,称为算术表达式。运算对象包括常量、变量、函数等。 例如: *.5a是一个

5、合法的表达式 语言规定了运算符的优先级和结合性。在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除 后加减。 规定了各种运算符的结合方向(结合性),算术运算符的结合 方向为“自左至右” ,即先左后右 。 (3)强制类型转换运算符 可以利用强制类型转换运算符将一个表达式转换成所需类型。 一般形式:(类型名) (表达式) 例如:(double) 将转换成 double 类型 (int)(x+y) 将 x+y 的值转换成整型 (float)(5%3) 将 5%3 的值转换成 float 型 例 3.8 强制类型转换。 #include void() ; ;();printf(“x=%f,

6、i=%dn“,x,i); (4) 自增、自减运算符作用是使变量的值增或减,如: ,(在使用之前,先使的值加(减) ,(在使用之后,使的值加(减)i+与+i 的区别:是先执行后,再使用的值;是先使用的值后,再执行。 例如: ; i 的值先变成 4, 再赋给,j 的值均为; 先将 i 的值 3 赋给,的值为,然后变为 注意: 自增运算符() ,自减运算符() ,只能用于变量,而不能 用于常量或表达式,和的结合方向是“自右至左” 。自增(减)运算符常用于 循环语句中使循环变量 自动加。也用于指针变量,使指针指向下一个地址 (5) 有关表达式使用中的问题说明ANSI C 并没有具体规定表达式中的子表达

7、式的求值顺序,允许各编 译系统自己安排。例如:对表达式 a = f1( )+f2( ) 并不是所有的编译系统都先调用 f1( ), 然后调用 f2( )。在有的情 况下结果可能不同。有时会出现一些令人容易搞混的问题,因此务必要小 心谨慎。 语言中有的运算符为一个字符,有的运算符由两个字符组成 , 为避免误解,最好采取大家都能理解的写法。例如:不要写成 i+j 的形式,而应写成 (i+)+j 的形式 在调用函数时,实参数的求值顺序,标准并无统一规定。 例如:的初值为,如果有下面的函数调用: printf(,i+) 在有的系统中,从左至右求值, 输出“,” 。在多数系统中对函数参数的求值顺序是自右

8、而左, 函数输出的是“,” 。以上这种写法不宜提倡, 最好改 写成j = i+;printf(“%d, %d“, j,i) 不要写出别人看不懂的也不知道系统会怎样执行程序3.9 赋值运算符和赋值表达式1.赋值运算符 赋值符号“”就是赋值运算符,它的作用是将一个数据赋给一个变 量。如“”的作用是执行一次赋值操作(或称赋值运算) 。把常量 赋给变量。也可以将一个表达式的值赋给一个变量. 2.类型转换如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋 值时要进行类型转换。 将浮点型数据(包括单、双精度)赋给整型变量时,舍弃浮点数的 小数部分。 如:为整型变量,执行“i=3.56”的结果是使

9、的值为,以整数 形式存储在整型变量中. 将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存 储到变量中如: 将赋给 float 变量,即执行,先将转 换成0,再存储在中。 将赋给型变量,即执行,则将补足 有效位数字为,然后以双精度浮点 数形式存储到变量中。 将一个 double 型数据赋给 float 变量时,截取其前面 7 位有效数 字,存放到 float 变量的存储单元(4 个字节)中。但应注意数值范围不 能溢出。 如:float f;double d=123.456789e100; f=d; 就出现溢出的错 误。如果将一个 float 型数据赋给 double 变量时,数值不变,

10、有效位 数扩展到 16 位,在内存中以 8 个字节存储 字符型数据赋给整型变量时,由于字符只占 1 个字节,而整型变量 为个字节,因此将字符数据(个二进位)放到整型变量存储单元的低 位中。 第一种情况: 如果所用系统将字符处理为无符号的字符类型,或程序已将字符变量 定义为 型,则将字符的位放到整型变量低 位,高位补零 例如:将字符赋给型变量第二种情况: 如果所用系统(如 Turbo C+)将字符处理为带符号的(即 signed char) ,若字符最高位为,则整型变量高位补;若字符最高位为 ,则高位全补。这称为“符号扩展” ,这样做的目的是使数值保持 不变,如变量(字符 )以整数形式输出为,的

11、值也 是。 将带符号的整型数据(int 型)赋给 long 型变量时,要进行符号扩 展,将整型数的 16 位送到 long 型低 16 位中: 如果 int 型数据为正值(符号位为) ,则 long 型变量的高 16 位补 ;约40 分钟如果 int 型变量为负值(符号位为) ,则 long 型变量的高 16 位补 ,以保持数值不改变。 反之,若将一个 long 型数据赋给一个 int 型变量,只将 long 型数据 中低 16 位原封不动地送到整型变量(即截断) 。 例如:int a; long b;a=b 赋值情况如图 : 如果(八进制数) ,则赋值后值为 。见图 3.14 将 unsig

12、ned int 型数据赋给 long int 型变量时,不存在符号扩展 问题,只需将高位补即可。将一个 unsigned 类型数据赋给一个占字节 数相同的非 unsigned 型整型变量(例如:unsigned int - int,unsigned long-long,unsigned short-short) ,将 unsigned 型 变量的内容原样送到非 unsigned 型变量中,但如果数据范围超过相应整 型的范围,则会出现数据错误。 例如:unsigned int 65535; int b;;将整个送到 中,由于是 int,第位是符号位,因此 b 成了负数。根据补码知识可 知,的值为

13、-1,可以用 printf(%d,);来验证。 将非 unsigned 型数据赋给长度相同的 unsigned 型变量,也是原样 照赋(连原有的符号位也作为数值一起传送) 例 3.9 有符号数据传送给无符号变量。 #include void () ; ;(n,) ; 强调:强调:强调:“%u”是输出无符号数时所用的格式符。如果为正值,且在 32767 之间,则赋值后数值不变。赋值情况见图 运行结果:6 5 5 3 5 3.复合的赋值运算符 在赋值符“”之前加上其他运算符,可以构成复合的运算符。 例如: 等价于 * 等价于 *() 等价于 以“”为例来说明,它相当于使进行一次自加的操作。 即先使

14、加,再赋给。 为便于记忆,可以这样理解: a += b (其中 a 为变量,b 为表达式) a += b(将有下划线的“a+”移到“=”右侧)|_ a = a + b (在“=”左侧补上变量名 a) 注意: 如果是包含若干项的表达式,则相当于它有括号。如: x %= y+3 x %= (y+3) |_ x = x %(y+3)(不要错写成 x=x%y+3) 凡是二元(二目)运算符,都可以与赋值符一起组合成复合赋值符。 语言规定可以使用种复合赋值运算符: ,*,| 4.赋值表达式 由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表 达式” 。 一般形式为: 例如: “5”是一个赋值表达式 对赋值表达式求解的过程是: 求赋值运算符右侧的“表达式”的值; 赋给赋值运算符左侧的变量。 例如: 赋值表达式“=3*5”的值为 15,执行表达式后,变量 a 的值 也是 15。 注意: 一个表达式应该有一个值 左值(

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

当前位置:首页 > 高等教育 > 其它相关文档

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