第三讲基本数据类型

上传人:yx****d 文档编号:243299345 上传时间:2024-09-20 格式:PPT 页数:29 大小:230.50KB
返回 下载 相关 举报
第三讲基本数据类型_第1页
第1页 / 共29页
第三讲基本数据类型_第2页
第2页 / 共29页
第三讲基本数据类型_第3页
第3页 / 共29页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,PROGRAM DESIGN IN C,第三讲 基本数据类型,第三讲 基本数据类型,引例,变量与常量,预备知识,内储存器的组织,数据类型,基本数据类型,整数类型,字符,浮点类型,C语言程序设计,2,引例,引例,问题,计算任意一个圆的面积。,源程序,(cw02-01.c),基本数据类型,#include ,void main() ,float r, area;,/定义变量,scanf(“%f”,/读取输入的半径,area = 3.14*r*r;,/计算圆的面积,printf(“area=%f”,area);,/输出,1,area=3.140000,area,r,area =,r,2,3,变量与常量,数据,(Data),程序需要使用数据。,数据是信息的载体。,数据有多种形式:数、字符、图片等。,常量,(Constants),在程序运行之前可以预先设定,并在整个运行过程中没有变化的数据。,例如引例中的圆周率3.14。,变量,(Variables),在程序运行过程中可能变化或被赋值的数据。,例如引例中的半径和面积。,基本数据类型,4,数据类型,数据类型的作用,决定数据的存储方式和占用的存储空间的大小。,决定可以进行的操作。,C语言的数据类型,基本类型,整型,(integer),,字符型,(character),,浮点型,(floating-point),,枚举类型,(enumeration),构造类型,结构体,(structure),,共用体,(union),,数组,(array),指针类型,(pointer),空类型,(void),基本数据类型,5,位、字节和字,内存储器的组织,基本数据类型,位(bit),:最小的存储单位,可以容纳两个值之一,即0或1。,2000,2001,2002,字节(Byte),:基本的存储单位,8位。,字(word),:自然的存储单位,包含若干个字节。例如32位机的一个字就是32位。,地址,:以字节为单位从0开始编号。,6,整数的存储方式,有符号的正整数,在内存中以,二进制补码,形式存放。,正整数的补码与原码相同。,例如:10,基本数据类型,符号位,0 0 0 0 0 0 0 0,0 0 0 0 1 0 1 0,RAM,数轴,0,2,15,-1=32767,可表示的数的范围,-2,15,=-32768,7,整数的存储方式,有符号的负整数,在内存中以,二进制补码,的形式存放。,例如:-10,基本数据类型,符号位,1 1 1 1 1 1 1 1,1 1 1 1 0 1 1 0,RAM,-10的原码,1,0 0 0 0 0 0 0,0 0 0 0 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 0 1 1 0,按位取反,加一后得到 -10的补码,符号位不变,8,整数的存储方式,无符号整数,所有二进制位都存放数值。,例如:65535,基本数据类型,1 1 1 1 1 1 1 1,1 1 1 1 1 1 1 1,RAM,0,2,16,-1=65535,可表示的数的范围,9,整数的类型,C语言提供多种整数类型,为程序员提供了针对不同用途的多种选择。,基本数据类型,类型名称,类型说明符,字节数,数值范围,基本整型,signed,int,4,-2147483648 2147483647,短整型,signed,short,int,2,-3276832767,长整型,signed,long,int,4,-2147483648 2147483647,无符号基本整型,unsigned,int,4,04294967295,无符号短整型,unsigned short,int,2,065535,无符号长整型,unsigned long,int,4,04294967295,C标准只规定:,short int long,最大最小值参考,仅供参考,实际值与所使用的操作系统、编译系统、机器有关。,10,整型常量,整型常量,有三种形式:,十进制,(decimal),整数,12 65 65535,八进制,(octal),整数:带前缀,0,(zero),0,14,0,101,0,177777,十六进制,(hexadecimal),整数:带前缀,0x,或,0X,0x,c,0x,41,0x,ffff,默认类型是int,即有符号的基本整型。,可以加上后缀,u,或,U,表示无符号整数,或者,l,或,L,表示长整数。,0x,b5,Lu,基本数据类型,11,RAM,整型变量,声明变量,(Declaration),变量在使用之前必须被声明。,声明语句的格式:,举例,基本数据类型, ,.,;,int counter;,int width, height;,short x, y;,long number;,变量声明创建了变量:为变量分配了存储空间。,height,12,整型变量,初始化,(Initialize),变量,为变量赋一个初始值。,可以在声明语句中初始化变量。,举例,变量获得值的方法,直接赋值,输入,初始化,基本数据类型,int counter = 0;,int width = 352, height = 288;,初始化式,RAM,288,height,13,整型变量,输出变量的值,可以使用,printf(),函数。,与,int,类型对应的格式说明符是,%d,。,举例,(cw02-02a.c),基本数据类型,#include ,void main() ,int a, b;,a=32767; b=-32768;,printf(a=,%d,b=,%d,n,a,b,);,a=32767,b=-32768,14,整数的溢出,溢出,整数太大,超出了整数类型的数值范围。,使用,printf(),时与,unsigned int,类型对应的格式说明符是,%u,。,举例,(cw02-02b.c),基本数据类型,#include ,void main() ,int a, b;,unsigned c, d;,a = 2147483647; b = a+1;,c = 4294967295; d = c+1;,printf(a=%d,b=%dn, a, b);,printf(c=%u,d=%u, c, d);,a=2147483647,b=-2147483648,c=4294967295,d=0,?,15,整数的溢出,溢出,结果分析,结论,a+1 的结果(2147483648) 超出了基本整型变量 b 所能容纳(表示)的数值范围(-21474836482147483647)。,请分析d的结果。,基本数据类型,0 1 1 1 1 1 1 1.1 1 1 1 1 1 1,1 0 0 0 0 0 0 0,.,0 0 0 0 0 0 0,a(2147483647),1 0 0 0 0 0 0 0.0 0 0 0 0 0 0,a+1(2147483648),b(-2147483648),12,加正数,减正数,16,字符的存储方式,字符编码,计算机使用一种数字编码(整数)来表示字符,每一个字符都对应一个特定的整数。,常用的编码是ASCII(美国信息交换用标准码)。,7位二进制数,十进制码值范围从0到127。,一般用一个字节保存,最高位为0。,字符的存储方式与整数相同,举例,字母A的ASCII码值为65,,那么在内存中以65的二进制形式存储,,且占一个字节。,基本数据类型,RAM,17,字符的类型和字符变量,C语言的字符类型:char,占一个字节;,可视为一个有符号的整数。,举例,(cw02-03.c),基本数据类型,#include ,void main() ,char c1, c2;,/声明字符变量,c1 = 97;,/把一个整数赋值给字符变量,c2 = c1-32;,/字符变量可以进行算术运算,printf(c1=,%c,c2=,%c,n, c1, c2);,printf(c1=,%d,c2=,%d,n, c1, c2);,c1=a,c2=A,c1=97,c2=65,18,字符常量,字符常量,用单引号括起来的一个字符。,x 9 +,C语言将字符常量视为int类型。,举例,(cw02-04.c),如果int类型为16位,char类型为8位,,那么对于bc,将把b和c的ASCII码值存储在两个字节中,并把c赋值给变量c2。,注意:不同系统处理方式不同,结果不同。,基本数据类型,char c1, c2;,c1=a;,c2=bc;,0 1 1 0 0 0 0 1,c1,0 1 1 0 0 0 1 1,c2,0 1 1 0 0 0 1 1,0 1 1 0 0 0 1 0,bc,L,H,97,99,99,98,19,字符常量,转义字符,(escape character),指代一些特殊的字符。,(打印不出来的字符),举例,(cw02-05.c),基本数据类型,a,警报,反斜杠(),b,退格,?,问号(?),f,走纸,单引号(),n,换行,“,双引号(”),r,回车,ooo,八进制值(o表示一个八进制数字),t,水平制表符,x,hh,十六进制值(h表示一个十六进制数字),v,垂直制表符,#include ,void main(),printf(a,t,b,n,c,b,d,100x40,n);,a,b,d,20,浮点数的存储方式,浮点数,浮点型数据在内存中按指数形式存放。,例如:314.15,= 3.141510,2,基本数据类型,0 (3.14159),10,0 (2),10,数符 尾数部分 阶符 阶码,+ 3.14159,10,+2,由此可见,尾数部分的宽度决定了有效数字的个数(即精度),阶码部分的宽度决定了数值范围。,RAM,科学计数法允许使用少量的数字表示很大范围的数和很小的数。,21,浮点数的类型,浮点数也有多种类型,类型名称及典型大小,基本数据类型,类型名称,类型说明符,字节数,有效数字,数值范围,单精度,float,4,67,(s)10,-37,10,38,双精度,double,8,1516,(s)10,-307,10,308,长双精度,long double,10,1819,(s)10,-4931,10,4932,S = 1,参考,仅供参考,实际值与所使用的操作系统、编译系统、机器有关。,数轴,0,可表示的正数,可表示的负数,22,浮点型常量,浮点型常量有两种形式:,十进制形式,12.3 .65 0.,指数形式: ,1.2e-2 .1E5 7E0,1.210,-2,0.110,5,7.010,0,默认类型是double。,可以加上后缀,f,或,F,表示float类型,或者,l,或,L,表示long double类型,否则该常量是double类型。,2.3f 1.2L .1E5f,基本数据类型,23,浮点型变量,浮点型变量的声明和初始化,举例,基本数据类型,float radius;,double x = 0.0, y = 0.0;,不能写成:,double x = y =0.0;,24,浮点型变量,浮点数的输出,使用printf()函数,float和double对应的格式说明符为%f、%e。,举例,(cw02-06.c),基本数据类型,#include ,void main() ,float f;,double d;,f=33333.33333,f,;,d=33333.3333333333;,printf(f=%fnd=%f, f, d);,f=33333.332031,d=33333.333333,有效数字位数是有限的,在可表示的有效位之外的数字被舍去。因此可能会产生误差。,25,浮点数的舍入误差,浮点数的舍入误差,举例,(cw02-07.c),基本数据类型,#include ,void main() ,float a, b;,a=123456.789e5;,b=a+20;,printf(a=%fnb=%f, a, b);,a=12345678848.000000,b=12345678848.000000,?,26,浮点数的舍入误差,浮点数的舍入误差,结果分析,基本数据类型,a=123456.789e5;,b=a+20;,a+20的理论值应该是:12345678920,但是,一个实型变量能够保证的有效数字是7位,后面的数字将被舍去,是没有意义的。,因此,最后得到,b=12345678848.000000,应当避免一个很大的数和一个很小的数直接相加或相减,否则就会“丢失”较小的数。,27,浮点数的溢出,上溢,举例,(cw02-08.c),若某系统中的最大float值为3.4e38,进行如下操作,得到结果,下溢,举例:假设-10是最小的指数,能够保留四位有效数字,如果把数0.1234e-10除以10,将得到结果0.0123e-10,但损失了一位有效数字。,基本数据类型,float toobig = 3.4e38 * 100.0f;,printf(“toobig=%f, toobig);,inf,无穷大(infinity),28,小结,C语言有多种数据类型。,基本的数据类型包括两大类:,整数类型,浮点类型,开发程序时,应当注意所需变量及其类型的选择。,一般使用int和float表示数,用char表示字符。,在使用变量的函数的可执行语句之前声明该变量,并为它选择有意义的名字。,初始化变量使用的常量应当与变量的类型相匹配。,基本数据类型,29,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!