第03章数据类型及运算规则.ppt

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

《第03章数据类型及运算规则.ppt》由会员分享,可在线阅读,更多相关《第03章数据类型及运算规则.ppt(82页珍藏版)》请在三一文库上搜索。

1、1,通知,在计算中心机房,安排C语言集中上机,专人辅导。 1.从第4周开始到第11周,每周1、周2的下午和晚上是C语言集中上机时间(不能做其他事),现场有老师辅导.其他时间没有辅导老师 2.要求学生根据自己情况选一时间段到计算中心上机.学生凭机票入机房,课程内免费机票在学院领取。,2,第三章 数据类型与运算规则,3,本章要点,数据的描述规则 数据的操作规则,第三章 数据类型与运算规则,4,第节 第节 第节 第节 第节 第节 第节,数据与数据类型 基本数据类型及其表示 算术运算与赋值运算 关系运算与逻辑运算 位运算 其它运算 混合运算及数据类型转换,第三章 数据类型与运算规则,5,3-1数据与数

2、据类型,程序设计语言的基本规则包括,常数 变量 运算符 表达式 函数,把自然语言描述问题的方式转换为C语言的形式表达给计算机,规则,6,问题,常数 3、5 和 3.6 的存放空间是否相同? 变量 a 如何表示?如何存放? 计算机如何知道 3.6 和 a 之间的关系? 3/5 和 sin x 如何输入?如何存放? 计算机如何识别“=”?运算结果放在哪里?,计算机完成上述计算,首先要解决数据的输入和存放问题,7,程序的任务是对数据进行处理,数据是程序处理的对象,而运算符是施加给这些数据的操作。 数据和运算符是表达式的基本元素,数据的存储 数据的操作,8,C语言的数据类型:,数据类型,构造类型,指针

3、类型,空类型(无值类型) void,9,3-2 基本数据类型及其表示,1、常量,在程序运行中,其值保持不变的量称为常量,整型 100,125,-100,0 实型 3.14 , 0.125,-3.789 字符型 a, b,2,常量的表示方法:,一、计算机语言表示数据的基本形式,10,2、变量,在程序运行过程中,其值改变的数据称为变量,变量通过变量名标识,变量名和内存中的存储单元相对应。编写程序时通过变量名来存、取存储单元。 变量必须先定义,后使用,变量,8,1000H 1001H 1002H,256,12,11,1.变量名由字母 A、B、Z、a、b、 、z,数字 0、1、 、9 和下划线 _ 组

4、成。 2.变量名的第一个字符必须是英文字母或下横线。 3.不能用系统中的关键字作为变量名 4.变量名中的字母是区分大小写的。 sum、stu_name、_age、Lts_1_2、a2 32c、x.y、start+9、c2.0 NAME name 表示两个不同的标识符。,变量名的规定,12,C语言是一种强制定义型语言,因此,在C语言中,要求对所有用到的变量作强制定义,也就是说,所有变量应当先定义,后使用,以便编译系统在编译时对变量按其类型分配响应的存储单元。,变量的定义:,13,变量的定义格式:,类型说明符 变量名列表; 例: int a, b, c; char ch; float x, y;,

5、14,二、整型数据,整型数据包括整型常量和整型变量, 整型数据以二进制补码形式存储,整型常量的不同数值表示方法 10进制:09 8进制:07,以0开头 16进制:09,AF/af,以0x或0X开头,1.整型常量,例,100、-8、0;010、024;0x38、0X1F,整型常量的类型 根据值大小默认类型 在常量后面加l或L,表示long int型 例如:123L,0L,432l 都是long int型常量,15,整型变量的形式,基本整型 短整型 长整型 无符号整型 无符号短整型 无符号长整型,int short int long int unsigned int unsigned short

6、unsigned long,占存储空间,占内存字节数,2 2 4 2 2 4,字节,.整型变量,16,整型变量的定义,例如:int i, j ; long k, m; unsigned int x,y;,C中的所有变量必须先定义后使用!,格式:类型说明符 变量列表;,17,整型数据的取值范围,18,整型变量的存放形式,数据在计算机内存中是以二进制数形式存放的。 实际上,在计算机当中数据是以补码的形式存储的。正数的补码是它本身,负数的补码是其绝对值取反加1。例如 -10 原码 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 绝对值 0 0 0 0 0 0 0 0 0 0 0 0

7、1 0 1 0 取反 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 加1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 -10,19,整型数据应用中的几个问题:,变量要先定义后使用 注意防止数据溢出 常量与变量的数据类型要匹配,20,例:,main( ) int a , b ,c; a = 32767 ; b = 3 ; c = a + b ; printf ( “ c = %d n ” , c ) ; ,21,修改后,main( ) long a , b , c ; a = 32767 ; b = 3 ; c = a + b ; printf ( “ c

8、= %d n ” , c ) ; ,22,三、实型数据,实型数据包括实型常量和实型变量,1.实型常量,两种表 示形式,小数 指数,0.123 3e-3,实型常量只能用十进制形式表示, 不能用八进制和十六进制,常量占用内存空间吗?,?,23,实型常量的表示方法,1) 十进制小数形式:由符号、整数部分、小数点及小数部分组成。 例: -12.67 121.91,24,由十进制小数形式加上指数部分组成: 十进制小数e指数 或 十进制小数E指数 其中e或E前面的数字表示尾数,e或E表示底数10,e后面的指数必须是整数,表示10的幂次。例如123e3或123E3都代表123103。 注意:字母e之前必须有

9、数字,而且e后面指数必须为整数。 一个实数可以有多种指数表示形式。“规范化指数形式”是指在字母e之前的小数部分中,小数点左边应有一位非零数字。一个实数在用指数形式输出时,是按规范化指数形式输出的。,2) 指数形式:,25,例:,1e3、1.8e-3、-123e-6、-.1e-3 e5、1e-3.2、e、.e-03,26,2.实型变量,实型变量的有关规则如下:,取值范围是指数据的绝对值,它表示了数值的精度。 有效数字是指数据在计算机中存储和输出时能够精确表示的数字位数。,27,实型数据在计算机中的存放形式,数符,小数,指数符号,指数,0.123456102,1位,23位,1位,7位,28,实型数

10、的分辨率: 最小正数:10-38 小于该数时处理为0 下溢 最大正数:1038 大于该数时提示出错 上溢,实型数在计算机内部都按指数形式存放 实型数常数不区分单精度和双精度 数的存储结构和精度与计算机硬件特性有关,超出表示范围的数机器如何处理?,29,实型数据应用中的误差问题,例:输出实型数据 a,b main( ) float a; double b; a=12345.6789; b=123456789123456.7899; printf(“a=%fnb=%fn”,a,b); ,30,Output:,a=12345.676711 b=123456789123456.797000,31,四、

11、字符型数据,字符型数据包括字符型常量和字符型变量,1、字符型常量,用单引号包含的一个字符是字符型常量 只能包含一个字符,例,a,A, 1 abc、“a”,32,C语言提供的另一种字符型常量是转义字符常量。转义字符常量是以反斜杠开头的字符常量,它通知编译器需要用特殊的方式处理反斜杠后的字符,将反斜杠后的字符转换成另外的意义。,转义字符(特殊形式的字符常量),33,n 换行 t 横向跳格 r 回车 反斜杠 ddd ddd表示1到3位八进制数字 xhh hh表示1到2位十六进制数字,例:60是十进制数48,代表ASCII码字符0 105是十进制数69,代表ASCII码字符E x61是十进制数97,代

12、表ASCII码字符a,34,定义形式 char 占存储空间,一个字节,2、字符型变量,一个字符变量只能包含一个字符!,例,main() char c ; c = c; printf ( “%c”, c ); ,运行结果:,c,35,a的ASCII值为97 内存中存储形式,0 1 1 0 0 0 0 1,在ASCII范围以内,整型数据 与字符型数据可以通用,字符型数据的存储格式:ASCII码 字符a、A、1 存储为:97、65、49,例,36,3、字符串常量,字符串常量是用双引号括起来的一个或多个字符。,n个字符组成的字符串常量, 占空间为 n+1 个字节,字符串结束标记 “空”字符,“a” 串

13、长 1 “This is C string” 串长16 “ ” (空格)串长1 “” (不含空格)串长0,例,C 语言中没有专用的字符串变量,!,37,main() char a,b,c; int d; a=5; b=60; c=A; d=1089; printf(“a=%c b=%c c=%d d=%cn“,a,b,c,d); printf(“a=%d b=%dn“,a,b); getch(); ,65,38,* 字符串 “w 110good”占几个字节?,思考:,* 字符串 “w11”占几个字节?,转义字符,字符串结束标记,w 11,3字节,3字节,39,访问内存的两种方式: 直接访问:按

14、地址直接存取 &a 间接访问:通过指针i间接存取,1、指针的概念,对于int a=10,c=5; float b=3.5;,内存分配,例,a的地址,a的内容,指针,a的地址,a是整型变量,存放内容 i是指针变量,存放地址,a的地址 a的指针,指向a,五、指针型数据及其表示,存储变量 2字节,40,例:int a=10,*i,x; float b=3.5,*p1; char c,*p2=,*i=a,2、指针变量的定义与赋值,定义: 存储类型 * 指针变量名,*i是i指向的变量a,指针运算,定义指针变量,指针初始化,指针赋值,41,*-指针运算符 &-取地址运算符 同级,右结合,指针变量的赋值,i

15、nt a=3,*p,*p1,*p2,*p3,p4; p=,不允许直接将一个整数直接 赋值给一个指针变量!,42,指针变量的类型是它所指向的值的类型!,问题:指针变量能指向常数吗?,常数不占用内存单元!,指针的应用在第十章介绍,43,在定义变量时为其指定值,初始化,方法:,int a=5; int a,b,c=5; int a=5,b=5,c=5; int a=b=c=5;,1. 定义变量的同时为其初始化 2. 初始化不是在编译时进行,而是在程序运行时完成的,六、变量的初始化,44,一、认识C中的运算符和表达式,运算分量,对数据进行 运算的符号,被加工 的数据,+,表达式,3-3 算术运算与赋值

16、运算,X= 5 + b * c,45,表达式的运算结果称为表达式的值,C中运算符,算术运算符 赋值运算符 关系运算符 逻辑运算符 位运算 逗号运算符 条件运算符 .,共34种,运算符和运算分量构成表达式,46,学习运算符应掌握的要点,运算符的种类与功能 运算符与运算分量的关系,个数,类型,A + B,(ab) ? a: b,目,关系,不同类型的变量,所占存储空间、数的表示范围、有效位和允许的操作不同,单目运算 双目运算 三目运算,47,优先级:运算符的执行顺序,结合性:相同优先级的多个运算符的运算顺序,X=a+b*c,a+b-c 572 a=b=5,左结合,右结合,Y=a*b*c ( *为从左

17、向右结合),48,优先级和结合性的记忆方法:,优先级: 单目运算符的优先级高于双目运算符 双目运算符的优先级高于三目运算符(特例:优先级小于三目运算符) 逗号运算符优先级最低,次之 结合性: 单目运算符结合性为从右向左结合 双目运算符结合性为从左向右结合(特例:结合性为从右向左结合) 三目运算符结合性为从右向左结合,49,+ 加法运算、正值运算 (4) - 减法运算、负值运算 (4) * 乘法运算(3) / 除法运算(3) % 求余运算(3) (结合性 ),二、算术运算符和算术表达式,1.参加运算的对象都是int型,其结果截取为int型。 10/3 11/3 1/2 10.0/3 1./2 1

18、0/5*3 10/(5*3) 2.求余运算对象必须是整型。 10 % 3 9 % 3 10 % 3 10 % 3,50,已知:int i=3; long e=4; float f=1.5; double d=2.0; 计算过程: f = 10 + a + i * f - d / e f = 107 + 4.5 - 0.5 f = 111.5 - 0.5 f = 111,算术表达式,51,三. 自增、自减运算符,功能:变量自身加(减)1,52,已知:i=3; 1.执行 printf( “%d”,i+); Output: 3 i的值为 4 2.执行 printf( “%d”,+i); Output

19、: 4 i的值为 4,示例:,53,54,main() int a=5,b=5,s ; s=a+b; /* 5,5,10 */ printf(“%d,%d,%dn”,a,b,s); s=a+ +b; /* 6,5,10 */ printf(“%d,%d,%dn”,a,b,s); s=+a+b; /* 7,5,12 */ printf(“%d,%d,%dn”,a,b,s); s= - -a+b; /* 6,5,11 */ printf(“%d,%d,%dn”,a,b,s); s=a- - +b; /* 5,5,11 */ printf(“%d,%d,%dn”,a,b,s); s=a+b; /*

20、5,5,10 */ printf(“%d,%d,%dn”,a,b,s); ,55,i=2; k=i+ + i+ + i+;,i=? k=?,i=2; k= (+i) + ( +i) + (+i);,5 6,i=? k=?,5 15,自增之后再相加,执行完分号再自增,56,四. 赋值运算符,将一个常量或一个表达式的值赋给一个变量,格式: 变量名表达式,x = 5 y = x + 10,57,可以将一个实型赋给一个整型也可将一个整型赋给一个实型,int x; x=5.3; x的值为 5 float y; y=5; y的值为 5.000000,赋值类型转换,例,接受赋值的变量类型决定了运算结果的类型

21、,58,59,算术运算与赋值运算相结合,例,60,main() int a,b,c,d; a=2,b=5 ,c= 6,d=10; a + =b; b- =c; c * =d; d / =a; a%=c; printf(“%d,%d,%d,%d,%dn”, a , b , c , d , a ); ,Output: 7,-1,60,1,7,例,61,注意:,如果复合赋值运算符的右侧是包含若干项的表达式,则右侧的表达式相当于一个整体。,如: x * = y + 8 x = x * ( y + 8 ),62,关系运算和逻辑运算经常作为条件语句和循环语句中的条件,其结果为一逻辑值,A和B中至少有一个大

22、于 C A和B全部大于 C A为不大于100的偶数,如何用C语言描述,关系运算,逻辑运算,3-4 关系运算和逻辑运算符,一、基本概念,条件,63,关系运算是一种比较运算,将两个值(表达式)进行比较,判断比较的结果是否符合给定的条件,二、关系运算符,大于 , 大于等于=, 小于 , 不等 !=, 小于等于=, 恒等=,1.,=,!=的优先级低于其余四个,2. 优先级,关系运算的优先级高于赋值,低于算术,区别 赋值,3 . 结合性:从左向右,abc,64,三、关系表达式,关系符与运算分量构成关系表达式 关系表达式的结果是一个逻辑值, 根据关系是否满足,分别取真或假。,例,int i=1,j=7,a

23、; a=i+(j%4!=0),Output:a=2,e1关系运算符 e2,C语言中没有专用的逻辑值,用数值1和0标识逻辑真和假。 1-真 0-假,100=1 3.5c 5*18=90 (int)2.5!=2.5,65,逻辑运算符是表述表达式之间的逻辑关系的一种运算符。,四 、逻辑运算符,66,五、逻辑表达式,用逻辑运算符将关系运算表达式或逻辑量连接起来构成逻辑表达式,(ab),e1逻辑运算符 e2,67,任何非零实数均作为逻辑上的1,例:a=5,b=7,c=4,d=3 x=(a+b)(c+d)&(da),先做算术运算, 再做关系判断, 将最后结果赋给x,逻辑表达式的值是1或0,表示真或假,X=

24、0,68,在逻辑表达式中,并不是所有的逻辑运算都必须执行。 如果&的一边已经为0,结果一定为 0 如果 | 的一边已经为 1 ,结果一定为 1,a&b&c a非0时再判断b,a,b均非0再判断c a|b|c a为非0,不必判断b和c,结果一定为1,69,已知 :a=1,b=2,c=3,d=4,m=1,n=1 执行(m=ab)&(n=cd) 之后 m=? n=?,题目分析: 由于 ab的值为 0,&的结果一定为0,即 m=0 (n=cd)不再运算,n维持原有的值,即 n=1,例,70,六、条件运算符与条件表达式,表达式1?表达式2:表达式3 功能:先计算表达式1的值,若其值为非0值,即逻辑真值,

25、则计算表达式2的值,并将表达式2的值作为整个条件表达式的结果,若表达式1的值为0,即逻辑假值,则计算表达式3的值,并将表达式3的值作为整个条件表达式的结果。,71,3-5 位运算,一、位运算的基本概念,数据在计算机中是以二进制代码的形式表示的,每一个二进制数称为一位。C语言的主要设计目的是为描述系统而设计的,因此C语言特别提供了对二进制位的操作功能,称为位运算。 把整型数看作为一个二进制序列,按位进行六种运算。,72,二、位运算符,运算符 含义 对象个数 结合方向 优先级 按位求反 单目 右 1 按位右移 双目 左 2 & 按位与 双目 左 3 | 按位或 双目 左 4 按位异或 双目 左 5

26、,73,三、按位与运算,四、按位或运算,74,六、移位运算,a: 1101,0011 b=a2: 0100,1100,c=a2: 0011,0100,五、按位异或运算,75,3-6 逗号运算符与逗号表达式,一、逗号运算符,表达式 1,表达式 2,表达式 3,表达式 n,功能:用于连接几个表达式,求解过程,顺序求解几个表达式,优先级(15),逗号运算符的优先级最低,结合性,左结合,76,二、逗号表达式,逗号表达式的值为最后一个表达式的值,X = ( ( a=4*5 , a*2 ) , a+6 ),a=20 X=26,77,3-7 混合运算与数据类型转换,各类数值型数据间的混合运算:,将不同数据类

27、型先转换成同一类型,然后进行运算,方式,自动进行-隐式转换 强制进行-显式转换,一、隐式转换(算术转换),优先级低的向优先级高的转换,规则,78,79,已知:int i; long e; float f; douible d; f = 10 + a + i * f - d / e,例,运算过程中的类型转换不是变量本身数据类型的转换,80,二、强制类型转换,(类型标识符)表达式,(int) (10+a+i*f-d/e),将该结果强制转换为整型,格式:,81,注意: 在强制类型转换运算符中,表达式应该用括号括起来,以表示将整个表达式的值进行强制类型转换。例如 (int)x+y; 则只表示将x转换成整型,然后与y相加。,82,需要说明的一点是在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型并未发生变化。例如 int i; float x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 输出: x=3.6,i=3,

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

当前位置:首页 > 其他


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