上次课内容: 算术运算 1、双元运算 2、自反算术赋值运算符 3、自加和自减运算 4、正负号运算符 5、赋值类运算符的副作用 关系、逻辑与条件运算 1、关系运算 2、逻辑运算 3、条件运算 练习:
上次课内容: 算术运算 1、双元运算 2、自反算术赋值运算符 3、自加和自减运算 4、正负号运算符 5、赋值类运算符的副作用 关系、逻辑与条件运算 1、关系运算 2、逻辑运算 3、条件运算 练习:
练习: 1、main0 int X-Ly y,Z, x*=3+2; printf(%dⅦn”,x) x*=y=z=4; printi(%dⅦn”,x) zx++-1; printf((“%d,%dn”,x,2); +=X+++(++y); printi(“%d%dn:x,z); 结果 40 3,0
练习: 1、main() { int x=2,y,z; x*=3+2;printf(“%d\n”,x); x*=y=z=4;printf(“%d\n”,x); x=y=1; z=x++-1;printf(“%d,%d\n”,x,z); z+=-x+++(++y);printf(“%d,%d\n:,x,z); } 结果: 10 40 2,0 3,0
表达式值 1(1)1<4&&4<7 0(2)1<4&&7<4 1(3)!(2<5==5) (4)!(1<3)川(2<5) 0(5)!(4<=6&(3<=7) man int j=1 printf(“%d,%d,%dm”,i++,i++,i++); 结果: 3,2,1
表达式值 1 (1) 1<4&&4<7 0 (2) 1<4&&7<4 1 (3) !(2<5==5) 1 (4) !(1<3)||(2<5) 0 (5) !(4<=6)&&(3<=7) main() { int i=1; printf(“%d,%d,%d\n”,i++,i++,i++); } 结果: 3,2,1
本课内容: 不同数据类型间的转换 教学目的: 、掌握相关概念 2、明确数据类型转换关系隐式和显示转换方法。 重点: 数据类型的转换 难点 显示转换方法,隐式转换规则
本课内容: 不同数据类型间的转换 教学目的: 1、掌握相关概念; 2、明确数据类型转换关系隐式和显示转换方法。 重点: 数据类型的转换 难点: 显示转换方法,隐式转换规则
概念 转换的三种形式: (1)、同类型但长度不同的数据间转换 (2)、定点方式与浮点方式之间的转换 (3)、整型数中的有符号格式与无符号格式之间转换 1、提升与降格 数据提升:由低级数据转换为高级数据。 (1)、短→长 (2)、整→浮 数据降格:由高级转为低级 (1)、长→短 (2)、浮→整 同长度的整数带符号与不带符号的,属同一级别 2、符号位扩展与零扩展 符号位扩展: signed型的整型提升为较长的 signed型时,增加的长 度中各位状态与原来较短的符号位相同。P39—图26
一、概念 转换的三种形式: (1)、同类型但长度不同的数据间转换 (2)、定点方式与浮点方式之间的转换 (3)、整型数中的有符号格式与无符号格式之间转换 1、提升与降格 数据提升:由低级数据转换为高级数据。 (1)、短→长 (2)、整→浮 数据降格:由高级转为低级。 (1)、长→短 (2)、浮→整 同长度的整数带符号与不带符号的,属同一级别。 2、符号位扩展与零扩展 符号位扩展:signed型的整型提升为较长的signed型时,增加的长 度中各位状态与原来较短的符号位相同。P39—图2.6
零扩展: unsigned型扩展为较长的整型数时,增加的位全部置0。 P39图26 3、最高位失去符号功能与变为符号位(同长度) signed型转 unsigned型,原符号位作为数据的一部分。 4、截去小数与四舍五入 实数转整数,小数部分舍去,按整数形式保存,实数的整数部分 不能超出整型数的最大范围。 (-32768~32767 foat( double)≠int 舍小数部分 double→foat去掉多余有效数字,四舍五入。 16位6位 5、丢失精度 转换的四舍五入截小数位,会丢失精度 6、结果不确定与截去高位 降格时,数据值超出目标类型的范围,结果将不确定。 P402.11
零扩展:unsigned型扩展为较长的整型数时,增加的位全部置0。 P39_图2.6 3、最高位失去符号功能与变为符号位(同长度) signed型转unsigned型,原符号位作为数据的一部分。 4、截去小数与四舍五入 实数转整数,小数部分舍去,按整数形式保存,实数的整数部分 不能超出整型数的最大范围。 (-32768~32767) float(double)→int 舍小数部分 double→float 去掉多余有效数字,四舍五入。 16位 6位 5、丢失精度 转换的四舍五入截小数位,会丢失精度 6、结果不确定与截去高位 降格时,数据值超出目标类型的范围,结果将不确定。 P40_2.11
、不同类型数据的隐式转换 隐式(自动转换) 转换 显式(强制转换) 运算转换:为使表达式中的各运算量具有同的类型而进行的数据类 型转换 赋值转换:一个值赋给与其不同类型的变量。 输出转换:输出时转换为指定的格式。 函数调用转换:函数调用时,形参与实参类型不一致而进行的转换。 、一般算术转换 算术转换(运算符转换) 目的:(1)将短的数扩展成机器处理的长度。 (2)使运算符两端具有共同的类型。 转换原则:(1)char、 short→ int float→ double P40P41 (2)运算符两端类型不一致时,“向高看齐” Char\ short>int >unsigned- long>double float
二、不同类型数据的隐式转换 转换 运算转换:为使表达式中的各运算量具有同的类型而进行的数据类 型转换。 赋值转换:一个值赋给与其不同类型的变量。 输出转换:输出时转换为指定的格式。 函数调用转换:函数调用时,形参与实参类型不一致而进行的转换。 1、一般算术转换 算术转换(运算符转换) 目的:(1)将短的数扩展成机器处理的长度。 (2)使运算符两端具有共同的类型。 转换原则:(1)char、short→int float →double P40_P41 (2)运算符两端类型不一致时,“向高看齐” Char、short→int →unsigned→long→double float 隐式(自动转换) 显式(强制转换)
2、赋值转换 赋值号右侧表达式的值类型转为左边变量类型。(右升可降) 3、输出转换 数据按指定格式输出。 注意:负数→无符号数符号位作为数值的一部分 长整→短整超范围时,输出以32768为模的余数 实型→整型超出整数最大范围时同上 P41~42 三、不同类型的显式转换 通过显式转换符对类型强制转换 格式:(类型标识符)表达式 如:P42~43 注意:显式转换后,对原来变量类型不改变
2、赋值转换 赋值号右侧表达式的值类型转为左边变量类型。(右升可降) 3、输出转换 数据按指定格式输出。 注意: 负数→无符号数 符号位作为数值的一部分 长整→短整 超范围时,输出以32768为模的余数 实型→整型 超出整数最大范围时同上。 P41~42 三、不同类型的显式转换 通过显式转换符对类型强制转换 格式:(类型标识符)表达式 如:P42~43 注意:显式转换 后,对原来变量类型不改变
小结 1、概念 2、隐式转换 3、显式转移 作业: P53~54 2.16.2.18.2.19
小结: 1、概念 2、隐式转换 3、显式转移 作业: P53~54 2.16,2.18,2.19