第03章 数据类型、运算符与表达式.ppt

上传人:本田雅阁 文档编号:2250366 上传时间:2019-03-11 格式:PPT 页数:61 大小:160.01KB
返回 下载 相关 举报
第03章 数据类型、运算符与表达式.ppt_第1页
第1页 / 共61页
第03章 数据类型、运算符与表达式.ppt_第2页
第2页 / 共61页
第03章 数据类型、运算符与表达式.ppt_第3页
第3页 / 共61页
亲,该文档总共61页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第03章 数据类型、运算符与表达式.ppt》由会员分享,可在线阅读,更多相关《第03章 数据类型、运算符与表达式.ppt(61页珍藏版)》请在三一文库上搜索。

1、第3章 数据类型、运算符与表达式,*重点与难点 3.1 C的数据类型 3.2 常量与变量 3.3 整型数据 3.4 实型数据 3.5 字符型数据 3.6 变量赋初值,3.7 各类数值型数据间的混合运算 3.8 算术运算符和算术表达式 3.9 赋值运算符和赋值表达式 3.10 逗号运算符和逗号表达式 *本章小结 *作业,重点与难点,重点:理解并掌握基本数据类型的使用方法;掌握赋值运算、算术运算和逗号运算的方法。 难点:对知识点的理解和应用。,3.1 C语言的数据类型(4类),3.2 常量与变量,3.2.1 常量和符号常量 3.2.2 变量,3.2.1 常量的定义与分类,什么是常量? 是指在程序运

2、行过程中,其值不能被改变的量。 常量可以分为哪两类? 1)字面常量(或称直接常量) 2)符号常量,符号常量的使用,# define PRICE 30 main() int num,total; num=10; total=num*PRICE; printf(“total=%d“,total); ,符号常量的好处: 1)含义明了 2)“一改全改”,3.2.2 变量,1)变量的概念 2)变量名、变量值和变量地址的关系? 3)变量名有何规定或约定? 4)为什么要求对所有用到的变量作强制定义?,1)变量的概念,变量? 是在程序运行过程中其值可以改变的量。 int a,b,c; float r,s;,2

3、) 变量名、地址和值,3)变量名有何规定?,变量名是一种标识符。 C语言规定标识符只能由字母(a-z或A-Z)、数字(0-9)和下划线(_)三种字符组成,且第一个字符必须为字母或下划线。 例如:name,_num,count_3,变量定义的约定?,变量名一般用小写字母表示,以增加可读性。 变量名的长度一般不要超过8个。 变量名应该“见名知意”,4)为什么要求对所有用到的变量作强制定义?,强制定义,即“先定义,后使用”。 “先定义,后使用”的目的? (1)方便编译系统为变量分配内存单元; (2)方便编译系统对变量类型的检查。,3.3 整型数据,3.3.1 整型常量的表示方法 3.3.2 整型变量

4、 3.3.3 整型常量的类型,3.3.1 整型常量的表示方法,123 (十进制) 0123 (八进制) 0x123, 0X123 (十六进制),3.3.2 整型变量,1. 整型数据在内存中的存在形式 2. 整型变量的分类 3. 整型变量的定义 4. 整型数据的溢出,1. 整型数据在内存中的存在形式,按二进制补码形式存放。 以-10为例? 10的原码:0000 0000 0000 1010 按位取反:1111 1111 1111 0101 末尾加1:1111 1111 1111 0110 (得-10补码),有符号和无符号整数,无符号 1111 1111 (255) 0000 0000 (0) 有

5、符号 1000 0000 (-128) 0111 1111 (127) 1111 1111 (-1),2. 整型变量的分类及范围,3. 整型变量的定义,int a,b; unsigned short c,d; long c,f;,4. 整型数据的溢出(例3.3),main() int a,b; a=32767; b=a+1; printf(“%d,%d“,a,b); ,32767:0111 1111 1111 1111 -32768:1000 0000 0000 0000,运行结果: 32767,-32768,3.3.3 整型常量的类型,(1)根据常量值所处的范围决定是int,long型。 (

6、2)在常量值后面加一个字符区分类型 128U 12345u 0l 12L,3.4 实型数据,3.4.1 实型常量的表示方法 3.4.2 实型变量 3.4.3 实型常量的类型,3.4.1 实型常量的表示方法,实数,又称浮点数。它有两种表示形式。 (1)十进制小数形式 .123 123. 12.0 0.0 (2)指数形式 1.23e3 5.49E-2 -1.26e10,3.4.2 实型变量,1. 实型数据在内存中的存放形式 2. 实型变量的分类 3. 实型数据的舍入误差,1. 实型数据在内存中的存放形式,2. 实型变量的分类,3. 实型数据的舍入误差,舍入误差? 由于实型变量是用有限的存储单元存放

7、的,因此能提供的有效数字总是有限,在有效位以外的数字将被舍去。由此可能产生的误差就是舍入误差。,例3.4 实型数据的舍入误差,main() float a,b; a=123456.789e5; b=a+20; printf(“%f“,b); ,12345678848.000000 float 只能保证7位有效数字,后面的数字并不能准确表示该数,3.4.3 实型常量的类型,C编译系统将实型常量作为双精度(double)来处理。 12.3 (double) 12.3F 12.3f (float),3.5 字符型数据,3.5.1 字符常量 3.5.2 字符变量 3.5.3 字符数据在内存中存储形式及

8、其使用方法 3.5.4 字符常量,3.5.1 字符常量,字符常量? 是用单引号()界定的一个字符。其中单引号只起界定作用,其本身并不是字符常量。 a, , 转义字符(又称换码序列)? 是C语言中一种特殊的表现形式,以开头。 n, , , , 376, x41,转义字符及其表示的作用,例3.5 转义字符的使用,main() printf(“ ab ct derftgn“); printf(“htibbj k“); ,3.5.2 字符变量,字符变量用来存放字符常量,且只能存放一个字符。 char c1,c2; c1=a;c2=b;,3.5.3 字符数据在内存中存储形式及其使用方法,字符数据以ASC

9、II码形式存储的。 可以与整型数据通用。,例3.6 字符数据与整型数据,main() char c1,c2; c1=65,c2=97; printf(“n%c,%c“,c1,c2); printf(“n%d,%d“,c1,c2); printf(“n%c,%c“,c1+32,c2-32); ,运行结果: A,a 65,97 a,A,3.5.4 字符串常量,字符串常量? 是一对双引号()括起来的字符序列。双引号只起界定作用,并不是字符串的字符。 “welcome“ , “ , “ “ 字符串的结束标志 0 (ASCII码值为0),是一个“空操作”。 c语言通过结束标志来判断字符串是否结束,a与“

10、a“,a :字符a, 仅包括a的ASCII码值,占1个字节 “a“:字符串a, 包括a的ASCII码值和字符串结束标志0,占两个字节,3.6 变量赋初值,为何需要对变量初始化? 变量定义后,系统并没有对其初始化,所以在其中存放的数据是随机的值,或称“垃圾值”。,如何对变量赋初值?,int x,y; x=12,y=13; int a=1,b=2; scanf(“%d,%d“,3.7 数值型数据间的混合运算,各数值型数据之间的转换顺序? char、shortintunsigned long、floatdouble 必须一步一步转换吗? 不是,一步到位的转换,譬如:char与double运算。 这种

11、转换需要程序员指定吗? 不需要,转换是系统自动进行的。,举例:求下面算术表达式的值及类型。 A+3+12.3*3+12L-b,1) A+3=65+3=68 (int) 2)12.3*3=36.9 (double) 3)68+36.9=104.9 (double) 4)104.9+12L=116.9 (double) 5)116.9-b=116.9-98=18.9 (double),3.8 算术运算符和算术表达式,3.8.1 C运算符简介 3.8.2 算术运算符和算术表达式 3.8.3 强制类型转换运算符 3.8.4 自增、自减运算符,3.8.1 C运算符简介,C语言的运算符范围很宽,把除了控制

12、语句和输入输出以外的几乎所有的基本操作都作为运算符处理。 运算符:参见附录III,3.8.2 算术运算符和算术表达式,1. 基本的算术运算符 2. 算术表达式和运算符的优先级与结合性,1. 基本的算术运算符,1) + - * / % 2) 不要和数学乘()、除()符号混淆。 a*b, ab, ab ; a/b, ,ab 3) 1/2=0 1/2.0=0.5 1.0/2=0.5 5/4=1 4) 8%3=2 8%-3=2 -8%3=-2 -8%-3=-2,2. 算术表达式和运算符的优先级与结合性,1)算术表达式 用算术运算符和括号将运算对象(常量、变量、函数等)连接起来的,符合C语法规则的式子。

13、 2)算术运算符的优先级 先乘除,后加减 3)算术运算符的结合性(或称结合方向) 从左至右,3.8.3 强制类型转换运算符,强制类型转换 (类型名)(表达式) 举例 (int)x+y (int)(x+y),例3.8 强制类型转换,main() float x; int i; x=3.6; i=(int)x; printf(“nx=%f,i=%d“,x,i); ,运行结果 x=3.600000,i=3,强制转换是一时性的转换!,3.8.4 自增、自减运算符,自增、自减:使变量的值增1或减1。 +i, -i:在使用i之前,先使i的值加(减)1 i+, i-:在使用i之后,使i的值加(减)1,举例

14、自增运算,main() int i=8,j=8,m,n; m=+i; n=j+; printf(“n%d,%d,%d,%d“,i,j,m,n); ,运行结果 9,9,9,8,3.9 赋值运算符和赋值表达式,1. 赋值运算符 2. 类型转换 3. 复合的赋值运算符 4. 赋值表达式,1. 赋值运算符,赋值运算符“=” 它的作用是将一个数据赋给一个变量。 赋值运算符的左边必须为变量 i=i+1; i+; +i; 优先级,结合方向 比算术运算符低,自右向左,2. 类型转换,如果“=”两侧的类型不一致,系统自动进行类型转换。 *截断 *符号位扩展 一般地,在相容类型的数据间进行赋值,以避免这种类型转换

15、的“副作用”。,3. 复合的赋值运算符,任何二元(二目)运算符均可构成复合赋值运算符 a=a+b =a+=b x=x%(y+3) =x%=y+3 复合赋值运算符的好处? 1)简化程序 2)因符合“逆波兰”式,提高了编译效率,4. 赋值表达式, x=12 y=a+b m=c%d a=(b=c)+(c=6),举例:设a=3,求下式a的值 a+=a*=a,0) a=3 1) a*=a = a=a*a=3*3=9 2) a+=a = a=a+a=9+9=18,3.10 逗号运算符和逗号表达式,逗号表达式一般形式: 表达式1,表达式2,.,表达式n 逗号表达式的值为表达式n的值。 逗号表达式的优先级最低,结合方向是自左向右 printf(“%d,%d,%d“,a,b,c);中a,b,c不是逗号运算。,课堂练习,p65 3.6,本章小结(3点),介绍了基本数据类型的常量和变量的使用方法。 介绍了数值型数据间混合运算的转换规则。 介绍了三种基本运算:算术运算、赋值运算、逗号运算。,作业,p66 3.9,3.12,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1