《c语言程序设计教学资料》第2章-数据类型.ppt

上传人:小飞机 文档编号:5896106 上传时间:2023-08-31 格式:PPT 页数:54 大小:1.88MB
返回 下载 相关 举报
《c语言程序设计教学资料》第2章-数据类型.ppt_第1页
第1页 / 共54页
《c语言程序设计教学资料》第2章-数据类型.ppt_第2页
第2页 / 共54页
《c语言程序设计教学资料》第2章-数据类型.ppt_第3页
第3页 / 共54页
《c语言程序设计教学资料》第2章-数据类型.ppt_第4页
第4页 / 共54页
《c语言程序设计教学资料》第2章-数据类型.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《《c语言程序设计教学资料》第2章-数据类型.ppt》由会员分享,可在线阅读,更多相关《《c语言程序设计教学资料》第2章-数据类型.ppt(54页珍藏版)》请在三一办公上搜索。

1、李静霞电话:测控技术研究所,第二章 数据类型,C语言的基本元素常量和变量的概念各种数据类型,内容提要:,C语言的基本元素,关键字(Keyword)标识符(Identifier)运算符(Operator)分隔符(Separator)空格、回车/换行、逗号等 其它符号 花括号“”和“”用来标识函数体或者语句块“/*”和“*/”是程序注释所需的定界符 数据(Data)常量(Variable)变量(Constant),C语言的基本元素,关键字也成保留字,它是C语言中具有特定含义,专门用作语言特定成分的一类符号。只能按照预先规定的含义使用,不能擅自改变其含义。ANSI推荐的C语言的关键字是32个 数据类

2、型关键字:int char float等 流程控制关键字:if else break等,注意:(1)关键字都有固定意义,不能擅自改变其含义。(2)所有关键字都必须小写。例:else与ELSE代表不同含义。else是关键字,ELSE是用户自定义标识符。,C语言的基本元素,标识符用来标记常量、变量、函数及文件名字的字符序列。可分为:系统预定标识符:系统预先定义好的标识符。如:主函数名main、库函数名printf等 系统预定义标识符和关键字的区别:前者允许用户赋予新的含义,但这样左会失去原先的预先定义的含义,使用不当还会使程序出错。不提倡这种做法。用户自定义标识符:用户根据需要自行定义的标识符。如

3、:变量名、自定义函数名max等。,C语言的基本元素,标识符的构成规则:必须以字母(大小写皆可)或下划线开头。随后可跟若干个(包括0个)字母、数字、下划线,例:x y3 _imax ELSE X A_to_B 7x int#No bad one re-input,C语言的基本元素,注意:不允许使用关键字作为标识符的名字,同时不应该与库函数名重名。例:int,float,for,sin等 标识符命名应“见名知意”。标识符区分大小写。,例:SUM、sum、Sum是三个标识符,C语言的基本元素,运算符,(1)算数运算符:+-*/%(2)关系运算符:=(5)增1和减1运算符:+-(6)条件运算符:?:(

4、7)强制类型转换运算符:(类型名)(8)指针和地址运算符:*&(9)计算字节数运算符:sizeof(10)下标运算符:(11)结构体成员运算符:-.(12)位运算符:|&(13)逗号运算符:,C语言的基本元素,数据是操作的对象,表现形式的不同分为:,常量(Constant)在程序中不能改变其值的量。变量(Variable)在程序运行期间,其值是可以改变的量。,常量,按照类型分类:整型常量、实型常量、字符型常量、字符串常量、枚举常量,(1)整型常量 十进制常量:123,-1,0 八进制常量:0123 十六进制常量:0 x123(2)实型常量 小数形式:12.34,-12.34 指数形式:1.23

5、4e-5,常量,(3)字符常量 a 转义字符:n等(4)字符串常量由双引号括起来的字符序列 如:“123”,“abc”,“hello world”C规定:在每一个字符串常量的结尾加一个“字符串结束标志”,以便系统据此判断字符串是否结束。C规定以字符0作为字符串结束标志。它不引起任何控制动作,也不显示,常量,例:如果有一个字符串常量“”,实际上在内存中是:,它占内存单元不是5个字符,而是6个字符,最后一个字符为0。但在输出时不输出0。,例:a是字符常量,“a”是字符串常量,二者不同,常量,(5)枚举常量“一一举列”之意,用来表示有限个数据值例:一个星期只有七天,一年有十二个月 enum week

6、day Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;,常量,符号常量(宏常量):用一个标识符代表一个常量。符号常量定义方法:#define 标识符 常量,例:#define PRICE 30 void main()int num,total;num=10;total=num*PRICE;printf(“total=%d”,total);,注意:(1)符号常量名习惯上用大写(2)符号常量的值在其作用域内不能改变,也不能再被赋值(3)宏常量没有数据类型,优点:(1)含义清楚(2)需要改变一个常量时能做到“一改全改”,const常

7、量:声明具有某种数据类型的常量。const常量定义方法:const 类型 标识符=常量,例:const double PI=3.14159,变量,用标识符(变量名)来表示。-只能以字母、数字、下划线组成,且以字母或下划线开头。-见名知意-先定义后使用,变量,定义方法:类型关键字 变量名;类型关键字 变量名1,变量名2,;,分类:整型变量、实型变量、字符型变量、指针型变量,int a;float a,b,c;,变量赋初值,(1)C 语言允许在定义变量的同时使变量初始化 如:int a=3;/指定a为整型变量,初值为3 float f=3.56;/指定f为浮点型变量,初值为3.56 char c=

8、a;/指定c为字符变量,初值为a(2)可以使被定义的变量的一部分赋初值。如:int a,b,c=5;/指定a、b、c为整型变量,但只对c初始化,c的初值为5,变量赋初值,(3)对几个变量赋以同一个初值 int a=b=c=3;int a=3,b=3,c=3;,变量,变量代表内存中具有特定属性的一个存储单元,它用来存放数据,这就是变量的值。从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。,变量名和变量值是两个不同的概念。变量名实际上是以一个名字代表的一个存储地址。通过变量名找到相应的内存地址,从该存储单元中读取数据。,C的数据类型,高级语言中为什么要引入数据类型?对计

9、算机系统和硬件而言,数据类型的概念是不存在的 引入数据类型的主要目的:,-有效地组织数据,把数据分成所需内存空间大小不同的数据-规范数据的使用-提高程序的可读性-方便用户的使用,C的数据类型,不同类型的数据代表不同的,数据表示形式 占用内存空间大小 合法的取值范围 可参与的运算种类,整型数据,整型数据:只有整数部分,没有小数部分。,(1)十进制整数 如:123,-456(2)八进制整数,以0头的数是八进制数 如:0123表示八进制数123,等于十进制数83,-011表示八进制数-11,即十进制数-9(3)十六进制整数,以0 x开头的数是16进制数 如:0 x123,代表16进制数123,等于十

10、进制数 291。-0 x1F,等于十进制数-31。(4)二进制整数 如:00010001,等于十进制数17。-00011111,等于十进制数-31。,十进制数 用0-9这10个数中的一个表示十进制的一位数逢10进1的进位原则,基为10 每位数字都有一个权值,是10的幂次十进制表示的数值可以写成按位权展开的多项式之和 例:十进制数字123.45可表示为 1102+2101+3100+410-1+510-2,二进制数 用0或1表示二进制的一位数逢2进1的进位原则,基为2 每位数字都有一个权值,是2的幂次二进制表示的数值可以写成按位权展开的多项式之和 例:二进制数字101.11可表示为 122+02

11、1+120+121+12-2=5.75 二进制数101.11对应于十进制数5.75,如何表示二进制的正、负?,0为正,1为负,0如何表示?+0的二进制:00000000 00000000-0的二进制:10000000 00000000,负数以二进制补码(Complement)形式存储 便于用统一的形式表示0 运算简单,将减法转为加法处理,补码如何计算?正数的反码、补码与其原码都是相同的对于负数,保持符号位不变,原码反码反码+1补码+0和-0的补码是相同的,符号位,-1的补码如何计算?,符号位,二进制的压缩表示:八进制、十六进制二进制八进制(3位一组),二进制、十进制、八进制转化表,二进制十六进

12、制(4位一组,以ABCDEF分别表示10-15),二进制、十进制、十六进制转化表,整型数据,整型数据有不同的类型 根据数值的取值范围,分为基本整型int、短整型short(int)、长整型long(int)为了充分利用数据取值范围,又进一步分为有符号整型signed(系统默认为有符号)、无符号整型unsigned,整数13在内存中实际存放的情况:,0,0,0,一个整型变量只能容纳-3276832767范围内的数,遇此情况就发生溢出。,例:#include void main()int a,b;a=32767;b=a+1;printf(“%d,%dn”,a,b);,运行结果:32767,-327

13、68,整型数据,整型数据超出取值范围时,数据呈现环形变化:32767+1=-32768 32767+2=-32767-32768-1=32767-32768-2=32766,浮点型数据,浮点型数据(实型)表示方法,(1)十进制小数形式 如:3.14,9.8。(2)指数形式 如:3.14e5,-3.14E-5注意:字母e(或E)的前后必须有数字,且e后面的数字必须为整数。例:1e3、1.8e-3、-123e-6 e3、e 可以有多种指数表示形式浮点数如:123.456可以表示为:123.456e0、12.3456e1、1.23456e2、0.123456e3,规范化的指数形式:在字母e(或E)之

14、前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字。,浮点型数据,浮点型数据数值的取值范围,可分为:单精度(float)、双精度(double)、长双精度(long double)三种形式,注意:浮点型数据的舍入误差,浮点型数据,例:#include void main()float a,b;a=123456.789e5;b=a+20;printf(“%fn%fn”,a,b);,运行结果:,避免将一个很大的数和一个很小的数直接相加减,大数吞小数,造成舍入误差。,浮点型数据,注意:实型内存存储格式的特殊性,无论是小数表示(12.34)还是指数表示(1.2e-5),在内存中都是用浮点方式

15、存储的。实数:N=Srj浮点数在计算机中的存储格式:,尾数(正负均可),一般为纯小数,阶码(正负均可),必须是整数,基数,阶码所占位数决定实数的取值范围,尾码所占的位数决定实数的精度,系统使用更多位来存储小数部分(尾数)系统使用更多的位存储指数部分(阶码)扩大了取值范围,但精度降低,增加了数值有效数字位数,提高数值精度,但数值取值范围缩小,浮点数并非真正意义上的实数,只是其在某种范围内的近似,字符型数据,字符型(char)数据就是字符,不具计算能力的文字数据类型 字符型数据是用单引号括起来的一个字符。例如:a、b、=、+、?abc、“a”,字符型数据,在C语言中,字符型数据有以下特点:-字符型

16、数据只能用单引号括起来,不能用双引号或其它括号。-字符型数据只能是单个字符,不能是字符串。-字符可以是字符集中任意字符。但数字被定义为字符型之后 就不能参与数值运算。如5和5是不同的。,转义字符是一种特殊的字符-转义字符以反斜线开头,后跟一个或几个字符。转义字符 具有特定的含义,不同于字符原有的意义,故称“转义”字符。,x30、x41、x61分别表示字符0、A和a060、101、141分别表示字符0、A和a,字符型数据,字符数据以二进制编码方式存储在内存中-一个字节保存一个字符-字符数据就是一个普通的整数-字符编码方式取决于计算机系统所使用的字符集-ASCII(美国标准信息交换码)字符集-每个

17、字符具有一个0127之间的编码值-可以从ASCII码表中查出,字符型数据和整型数据之间可以通用。一个字符数据既可以以字符形式输出,也可以以整数形式输出。,字符型数据,例:#include main()char ch=b;ch=b-32;printf(“%c,%d”,ch,ch);,运行结果:B,66,只要不超过ASCII码取值范围,char数据和int数据之间可以相互转换。大、小写英文字母的ASCII码相差32。,字符型数据,字符串和字符之间主要有以下区别:字符由单引号括起来,字符串由双引号括起来。字符只能是单个字符,字符串则可以含一个或多个字符。可以把一个字符型数据赋予一个字符变量,但不能把

18、一个字符串赋予一个字符变量。在C语言中没有相应的字符串变量,也就是说不存在这样的关键字,将一个变量声明为字符串。但是可以用一个字符数组来存放一个字符串,这将在数组一章内予以介绍。字符占一个字节的内存空间。字符串占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符0(ASCII码为0)。这是字符串结束的标志。,Turbo C+下基本数据类型取值范围,基本数据类型,注意:,同种数据类型在不同的平台所占字节数不尽相同 用sizeof获知数据类型的长度。当数值超过该类型取值范围时,会产生数值溢出(运行时不报错)。不同类型浮点型数据,精度不同,会产生舍入误差。字符型和整型存在一定关系。,数据类

19、型的转换,转换方式有两种:自动类型转换;强制类型转换,1.自动类型转换,存储长度较短,存储长度较长,这种类型转换是由系统自动进行的。,数据类型的转换,例:int x=2;float y=1.6;char c=A;,65(int),数据类型的转换,2.强制类型转换 一般形式为:(类型名)表达式(double)a 将变量a强制转换为double类型(int)(x+y)将x+y强制转换为int类型(float)(5%3)将5%3强制转换为float类型(float)x/y 将x强制转换为float类型后,再与y进行除法运算,int a=2,b=5;float x=4.4;,(float)b/a,2.

20、5,(int)x/a,2,基本数据类型,衡量物理存储器容量的最小单元是位,也称比特(Bit)一个位有多大?-只能是0或1,二进制-一个位无法表示太多数据,所以须将很多位合起来使用 字节(Byte)-1个字节=8位-字节是最小的可寻址的存储器单位-通常用字节数的多少衡量内存空间的大小,基本数据类型,内存大小表示单位,本章总结,C语言的常见符号分类,关键字、标识符、运算符、分隔符、其它符号、数据,注意:标识符命名原则,常量和变量的概念,各种数据类型的常量和变量,整型、浮点型、字符型,注意:不同数据类型所占字节数不同,同种数据在不同平台所占字节数也不 尽相同。数据溢出,舍入误差,实验题,P25,#includemain()int a=1;float b=2.5;char c=A;printf(“a=%d,sizeof(a)=%dn”,a,sizeof(a);printf(“b=%f,sizeof(b)=%dn”,a,sizeof(b);printf(“c=%c,sizeof(c)=%dn”,a,sizeof(c);printf(“end of programdn);,a=1,sizeof(a)=4b=2.500000,sizeof(b)=4c=A,sizeof(c)=1end of programd,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号