您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 第三讲 基本数据类型
《C语言程序设计教程》编写组2007年1月第三讲基本数据类型2第三讲基本数据类型引例变量与常量预备知识内储存器的组织数据类型基本数据类型整数类型字符浮点类型C语言程序设计3引例引例问题计算任意一个圆的面积。源程序(cw02-01.c)基本数据类型#includestdio.hvoidmain(){floatr,area;//定义变量scanf(“%f”,&r);//读取输入的半径area=3.14*r*r;//计算圆的面积printf(“area=%f”,area);//输出}1area=3.140000areararea=Лr24变量与常量数据(Data)程序需要使用数据。数据是信息的载体。数据有多种形式:数、字符、图片等。常量(Constants)在程序运行之前可以预先设定,并在整个运行过程中没有变化的数据。例如引例中的圆周率3.14。变量(Variables)在程序运行过程中可能变化或被赋值的数据。例如引例中的半径和面积。基本数据类型5数据类型数据类型的作用决定数据的存储方式和占用的存储空间的大小。决定可以进行的操作。C语言的数据类型基本类型整型(integer),字符型(character),浮点型(floating-point),枚举类型(enumeration)构造类型结构体(structure),共用体(union),数组(array)指针类型(pointer)空类型(void)基本数据类型6位、字节和字内存储器的组织基本数据类型位(bit):最小的存储单位,可以容纳两个值之一,即0或1。200020012002字节(Byte):基本的存储单位,8位。字(word):自然的存储单位,包含若干个字节。例如32位机的一个字就是32位。地址:以字节为单位从0开始编号。7整数的存储方式有符号的正整数在内存中以二进制补码形式存放。正整数的补码与原码相同。例如:10基本数据类型符号位00000000000010100000000000001010RAM数轴0215-1=32767可表示的数的范围-215=-327688整数的存储方式有符号的负整数在内存中以二进制补码的形式存放。例如:-10基本数据类型符号位11111111111101101111111111110110RAM-10的原码100000000000101011111111111101011111111111110110按位取反加一后得到-10的补码符号位不变9整数的存储方式无符号整数所有二进制位都存放数值。例如:65535基本数据类型11111111111111111111111111111111RAM0216-1=65535可表示的数的范围10整数的类型C语言提供多种整数类型为程序员提供了针对不同用途的多种选择。基本数据类型类型名称类型说明符字节数数值范围基本整型[signed]int4-2147483648~2147483647短整型[signed]short[int]2-32768~32767长整型[signed]long[int]4-2147483648~2147483647无符号基本整型unsigned[int]40~4294967295无符号短整型unsignedshort[int]20~65535无符号长整型unsignedlong[int]40~4294967295C标准只规定:short≤int≤long最大最小值参考limits.h仅供参考,实际值与所使用的操作系统、编译系统、机器有关。11整型常量整型常量有三种形式:十进制(decimal)整数126565535八进制(octal)整数:带前缀0(zero)01401010177777十六进制(hexadecimal)整数:带前缀0x或0X0xc0x410xffff默认类型是int,即有符号的基本整型。可以加上后缀u或U表示无符号整数,或者l或L表示长整数。0xb5Lu基本数据类型12RAM整型变量声明变量(Declaration)变量在使用之前必须被声明。声明语句的格式:举例基本数据类型类型说明符变量名[,变量名[,...]];intcounter;intwidth,height;shortx,y;longnumber;变量声明创建了变量:为变量分配了存储空间。height13整型变量初始化(Initialize)变量为变量赋一个初始值。可以在声明语句中初始化变量。举例变量获得值的方法直接赋值输入初始化基本数据类型intcounter=0;intwidth=352,height=288;初始化式RAM288height14整型变量输出变量的值可以使用printf()函数。与int类型对应的格式说明符是%d。举例(cw02-02a.c)基本数据类型#includestdio.hvoidmain(){inta,b;a=32767;b=-32768;printf(a=%d,b=%d\n,a,b);}a=32767,b=-3276815整数的溢出溢出整数太大,超出了整数类型的数值范围。使用printf()时与unsignedint类型对应的格式说明符是%u。举例(cw02-02b.c)基本数据类型#includestdio.hvoidmain(){inta,b;unsignedc,d;a=2147483647;b=a+1;c=4294967295;d=c+1;printf(a=%d,b=%d\n,a,b);printf(c=%u,d=%u,c,d);}a=2147483647,b=-2147483648c=4294967295,d=0???16整数的溢出溢出结果分析结论a+1的结果(2147483648)超出了基本整型变量b所能容纳(表示)的数值范围(-2147483648~2147483647)。请分析d的结果。基本数据类型01111111...111111110000000...0000000a(2147483647)10000000...0000000a+1(2147483648)b(-2147483648)12加正数减正数17字符的存储方式字符编码计算机使用一种数字编码(整数)来表示字符,每一个字符都对应一个特定的整数。常用的编码是ASCII(美国信息交换用标准码)。7位二进制数,十进制码值范围从0到127。一般用一个字节保存,最高位为0。字符的存储方式与整数相同举例字母A的ASCII码值为65,那么在内存中以65的二进制形式存储,且占一个字节。基本数据类型0100000101000001RAM18字符的类型和字符变量C语言的字符类型:char占一个字节;可视为一个有符号的整数。举例(cw02-03.c)基本数据类型#includestdio.hvoidmain(){charc1,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=Ac1=97,c2=6519字符常量字符常量用单引号括起来的一个字符。'x''9''+‘C语言将字符常量视为int类型。举例(cw02-04.c)如果int类型为16位,char类型为8位,那么对于’bc’,将把’b’和’c’的ASCII码值存储在两个字节中,并把’c’赋值给变量c2。注意:不同系统处理方式不同,结果不同。基本数据类型charc1,c2;c1=‘a’;c2=‘bc’;01100001c101100011c20110001101100010‘bc’LH9799999820字符常量转义字符(escapecharacter)指代一些特殊的字符。(打印不出来的字符)举例(cw02-05.c)基本数据类型\a警报\\反斜杠(\)\b退格\?问号(?)\f走纸\‘单引号(’)\n换行\“双引号(”)\r回车\ooo八进制值(o表示一个八进制数字)\t水平制表符\xhh十六进制值(h表示一个十六进制数字)\v垂直制表符#includestdio.hvoidmain(){printf(a\tb\nc\bd\100\x40\n);}abd@@21浮点数的存储方式浮点数浮点型数据在内存中按指数形式存放。例如:314.15=3.1415×102基本数据类型0(3.14159)100(2)10数符尾数部分阶符阶码+3.14159×10+2由此可见,尾数部分的宽度决定了有效数字的个数(即精度),阶码部分的宽度决定了数值范围。RAM科学计数法允许使用少量的数字表示很大范围的数和很小的数。22浮点数的类型浮点数也有多种类型类型名称及典型大小基本数据类型类型名称类型说明符字节数有效数字数值范围单精度float46~7(s)10-37~1038双精度double815~16(s)10-307~10308长双精度longdouble1018~19(s)10-4931~104932S=±1参考float.h仅供参考,实际值与所使用的操作系统、编译系统、机器有关。数轴0可表示的正数可表示的负数23浮点型常量浮点型常量有两种形式:十进制形式12.3.650.指数形式:小数e|E整数1.2e-2.1E57E01.2×10-20.1×1057.0×100默认类型是double。可以加上后缀f或F表示float类型,或者l或L表示longdouble类型,否则该常量是double类型。2.3f1.2L.1E5f基本数据类型24浮点型变量浮点型变量的声明和初始化举例基本数据类型floatradius;doublex=0.0,y=0.0;不能写成:doublex=y=0.0;25浮点型变量浮点数的输出使用printf()函数float和double对应的格式说明符为%f、%e。举例(cw02-06.c)基本数据类型#includestdio.hvoidmain(){floatf;doubled;f=33333.33333f;d=33333.3333333333;printf(f=%f\nd=%f,f,d);}f=33333.332031d=33333.333333有效数字位数是有限的,在可表示的有效位之外的数字被舍去。因此可能会产生误差。26浮点数的舍入误差浮点数的舍入误差举例(cw02-07.c)基本数据类型#includestdio.hvoidmain(){floata,b;a=123456.789e5;b=a+20;printf(a=%f\nb=%f,a,b);}a=12345678848.000000b=12345678848.000000???27浮点数的舍入误差浮点数的舍入误差结果分析基本数据类型a=123456.789e5;b=a+20;a+20的理论值应该是:12345678920但是,一个实型变量能够保证的有效数字是7位,后面的数字将被舍去,是没有意义的。因此,最后得到b=12345678848.000000应当避免一个很大的数和一个很小的数直接相加或相减,否则就会“丢失”较小的数。28浮点数的溢出上溢举例(cw02-08.c)若某系统中的最大float值为3.4e38,进行如下操作得到结果下溢举例:假设-10是最小的指数,能够保留四位有效数字如果把数0.1234e-10除以10,将得到结果0.0123e-10,但损失了一位有效数字。基本数据类型floattoobig=3.4e38*100.0f;printf(“toobig=%f,toobig);…inf…无穷大(infinity)29小结C语言有多种数据类型。基本的数据类型包括两大类:整数类型浮点类型开发程序时,应当注意所需变量及其类型的选择。一般使用int和float表示数,用char表示字符。在使用变量的函数的可执行语句之前声明该变量,并为它选择有意义的名字。初始化变量使用的常量应当与变量的类型相匹配。基本数据
本文标题:第三讲 基本数据类型
链接地址:https://www.777doc.com/doc-3734966 .html