资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,PROGRAM DESIGN IN C,C,语言程序设计,计算机与软件学院,2012,年,9,月,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第二讲 基本数据类型,2,第二讲 基本数据类型,引例,数据类型,变量与常量,预备知识,内存储器的组织,基本数据类型,整数类型,字符,浮点类型,C,语言程序设计,3,引例,引例,问题,计算任意一个圆的面积。,源程序,(例,2.2,),基本数据类型,#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,基本数据类型,数据,(,Data,),程序需要使用数据。,数据是信息的载体。,数据有多种形式:数、字符、图片、音乐等。,数据类型的作用,决定数据的存储方式和占用的存储空间的大小,以及可以表示的数值范围。,决定可以进行的操作。,计算机是如何区分这些数据的呢?,基本数据类型,基本数据类型,数据类型,基本数据类型,构造数据类型,指针类型,空类型,整型,(,int,),实型(浮点型),字符,(,char,),单精度,(,float,),双精度,(,double,),数组类型,结构体类型,共用体类型,枚举类型,C,语言的数据类型,基本数据类型,6,变量与常量,常量,(,Constants,),在程序运行过程中,值不能被改变的量称为常量。,直接常量(字面常量),有不同的类型:整型常量,如,1,、,2,、,0,、,-5,等;实型常量,如,5.1,、,2.1,、,-1.56,等;字符常量,如,a,、,w,等。,如,a=b+5,;,符号常量。例如引例中的圆周率,3.14,。,可以用一个标识符代表一个常量,被称为符号常量。,符号常量的定义:,#define,符号常量名 常量,(,#define PI 3.14,),。,符号常量名通常用大写,变量名用小写。,使用符号常量的好处:,(,1,)含义清楚。,#define PI 3.14,(,2,)符号常量可以做到一改全改。,基本数据类型,7,变量与常量,变量,(,Variables,),基本数据类型,在程序运行过程中其值可以改变的量,,系统为程序中的每一个变量开辟一个存储单元。,如:,main(),int a,,,b;,a=2;,printf(a=%dn,a);,b=4;,printf(“b=%dn,b);,2,4,a,b,1000,1004,变量名,变量值,存储单元地址,8,变量与常量,标识符,(,Identifiers,),是程序中引用对象的名称。,用来标识变量、符号常量、数组、函数、结构体、共用体、自定义类型等。,标识符分为,3,类。,关键字标识符:,C,语言中的关键字不能用作变量名及其他用户标识符。比如不能用,int,作变量名,但可以用,int1,、,Int,、,INT,等。,关键字,(,Keywords,),也称为保留字,(,Reserved words,),。包括:,类型说明:,int,、,long,、,short,、,float,、,double,、,char,、,unsigned,、,signed,、,const,、,void,、,volatile,、,enum,、,struct,、,union,语句定义:,if,、,else,、,goto,、,switch,、,case,、,do,、,while,、,for,、,continue,、,break,、,return,、,default,、,typedef,存储类别说明:,auto,、,register,、,extern,、,static,长度运算符:,sizeof,基本数据类型,9,变量与常量,预定义标识符:,一般指,C,语言提供的库函数名和编译预处理命令。最好不要使用预定义标识符作为用户标识符使用。比如系统库函数名,printf,、,scanf,等。,用户标识符:,在编程时,用户可以自己定义的一些变量、函数和数组就组成了用户标识符。,标识符命名规则如下:,只能由字母、数字和下划线组成,且必须以字母或下划线开头;,区分英文大小写字母。因此,day,、,Day,、,DAY,是不同的变量;,标识符的有效长度随系统而异,如,Microsoft C,为,8,个有效字符,而,Turbo C,为,32,个有效字符。如果超长,则超长部分被舍弃。,不能与关键字标识符相同,尽量不使用预定义标识符。,一般来说,用户标识符的命名最好通过变量名就知道变量值的含义。通常应选择能表示数据含义的英文单词或汉语拼音作变量名。,基本数据类型,count,,,student_name,,,sum,,,test13,,,_number,,,Sum,M.John,,,$123,,,hi!,,,12xyz,,,void,10,位、字节和字,内存储器的组织,基本数据类型,位(,bit,),:最小的存储单位,可以容纳两个值之一,即,0,或,1,。,2000,2001,2002,字节(,Byte,),:基本的存储单位,,8,位。,字(,word,),:自然的存储单位,包含若干个字节。例如,32,位机的一个字就是,32,位。,地址,:以字节为单位从,0,开始编号。,11,整数的存储方式,有符号的正整数,在内存中以,二进制补码,形式存放。,正整数的补码与原码相同。,例如:,10,基本数据类型,符号位,0 0 0 0 0 0 0 0,0 0 0 0 1 0 1 0,00000000,00001010,RAM,数轴,0,2,15,-1=32767,可表示的数的范围,-2,15,=-32768,12,整数的存储方式,有符号的负整数,在内存中以,二进制补码,的形式存放。,例如:,-10,基本数据类型,符号位,1 1 1 1 1 1 1 1,1 1 1 1 0 1 1 0,11111111,11110110,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,的补码,符号位不变,13,整数的存储方式,无符号整数,所有二进制位都存放数值。,例如:,65535,基本数据类型,1 1 1 1 1 1 1 1,1 1 1 1 1 1 1 1,11111111,11111111,RAM,0,2,16,-1=65535,可表示的数的范围,14,整数的类型,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,最大最小值参考,仅供参考,实际值与所使用的操作系统、编译系统、机器有关。,15,整型常量,整型常量,有三种形式:,十进制,(,decimal,),整数,12 65 65535,八进制,(,octal,),整数:带前缀,0,(,zero,),0,14,0,101,0,177777,十六进制,(,hexadecimal,),整数:带前缀,0 x,或,0X,0 x,c,0 x,41,0 x,ffff,默认类型是,int,,即有符号的基本整型。,可以加上后缀,u,或,U,表示无符号整数,或者,l,或,L,表示长整数。,0 x,b5,Lu,基本数据类型,各种进制之间的转换,二进制、八进制、十六进制转换成十进,方法:把每一位的数字乘以其相应位的权值,将各乘积相加,各种进制之间的转换,十进制转换成二进制、八进制、十六进制,方法:,整数部分:除基取余法,直至商为,0,小数部分:乘基取整法,直至小数部分为,0,或达到精度为止,例 把十进制数,459.78125,转换成十六进制数,459,16,28,16,1,16,0,1 C B,余,11,余,12,余,1,0.78125*16=12.5 12,0.5*16=8 8,8,C,(459.78125),10,=(1CB.C8),16,各种进制之间的转换,二进制与八进制之间的转换方法:,二进制转换成八进制:,整数部分从右向左,小数部分从左向右,每,3,位一组(不足,3,位补,0,),转换成八进制。,八进制转换成二进制:,用,3,位二进制数代替每一位八进制数。,例,(11010.01),2,=(,0,11,010.01,0,),2,=(32.2),8,例,(24.6),8,=(010,100.110),2,=(10100.11),2,000 0,001 1,010 2,011 3,100 4,101 5,110 6,111 7,各种进制之间的转换,二进制与十六进制之间的转换方法:,二进制转换成十六进制:,整数部分从右向左,小数部分从左向右,每,4,位一组,(不足,4,位补,0,),转换成十六进制。,十六进制转换成二进制:,用,4,位二进制数代替每一位八进制数。,例,(11010101.111101),2,=(1101,0101.1111,01,00,),2,=(D5.F4),16,例,(4B9.E),16,=(,0,100,1011,1001.1110),22,0000 0,0001 1,0010 2,0011 3,0100 4,0101 5,0110 6,0111 7,1000 8,1001 9,1010 A,1011 B,1100 C,1101 D,1110 E,1111 F,20,RAM,整型变量,声明变量,(,Declaration,),变量在使用之前必须被声明。,声明语句的格式:,举例,基本数据类型,.,;,int counter;,int width,height;,short x,y;,long number;,变量声明创建了变量:为变量分配了存储空间。,height,21,整型变量,初始化,(,Initialize,),变量,为变量赋一个初始值。,可以在声明语句中初始化变量。,举例,变量获得值的方法,直接赋值,(,a=5;,),输入,(,scanf(“%d”,),初始化,(,int a=5;),基本数据类型,int counter=0;,int width=352,height=288;,初始化式,RAM,288,height,22,整型变量,输出变量的值,可以使用,printf(),函数。,与,int,类型对应的格式说明符是,%d,。,举例,基本数据类型,#include,void main(),int a,b;,a=32767;b=-32768;,printf(a=,%d,b=,%d,n,a,b,);,a=32767,b=-32768,23,整数的溢出,溢出,整数太大,超出了整数类型的数值范围。,使用,printf(),时与,unsigned int,类型对应的格式说明符是,%u,。,举例,基本数据类型,#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=-
展开阅读全文