C语言基本的数据类型.ppt

上传人:tia****nde 文档编号:14142084 上传时间:2020-07-06 格式:PPT 页数:59 大小:435KB
返回 下载 相关 举报
C语言基本的数据类型.ppt_第1页
第1页 / 共59页
C语言基本的数据类型.ppt_第2页
第2页 / 共59页
C语言基本的数据类型.ppt_第3页
第3页 / 共59页
点击查看更多>>
资源描述
第3章 基本数据类型(1),本章内容介绍,引出:标示符 3.1 C语言的数据类型 3.2 整型和实型 3.3 字符型 3.4 库函数,补充:什么是标识符,标识符是一个名字,是给程序中的实体(常量、变量、类型、函数、数组、结构体以及文件起的名称,文件名也是标示符。 组成:由字母、下划线、数字组成,且标示符必须由字母或下划线开头,否则程序出错。 C语言不允许同时定义2个相同变量。 C语言不同于其它语言,区分大小写。 Area _abc 4dd 长度:只能识别前8位。建议变量名的长度最好不要超过8个字符,标识符分类,标识符有三类:关键字、预定义标识符和用户定义标识符。 1)关键字 已被C系统所占用的标识符称为关键字,每个关键字在C程序中都有其特定的作用,关键字不能作为用户标识符。 Turbo C 20的关键字,共32个,所有关键字中只包含小写字母和下划线。,标示符,ANSI标准定义的共32个关键字,标识符分类,2)预定义标识符 C语言系统提供的库函数名和编译预处理命令等构成了预定义标识符。 printf,scanf等 3)用户标识符 禁止使用 关键字作为用户的标识符 尽量避免使用预定义标识符作为用户标识符 标识符中不能出现全角字符、空格 使用标识符最好做到见名知义 标识符必须先定义后使用,否则出现编译错误,标识符,常量的类型,在程序运行过程中,其值不能被改变的量称为常量 常量区分为不同类型, 1)整型常量: 100,-100,07623 , 0 xa3f 2)实型常量: 3.14 , 1.2345e3 ,-3.789 3)字符型常量: a, b,2 4)字符串常量:123 , Good morning! 5)符号常量:define PI 3.14159 PI、ESC与ID是符号常量,变量,变量:是值可以改变的量。实质:内存中的存储单元 定义方法:数据类型 标示符 标识符的格式: 1)只能使用字母、数字或下划线 2)首字符必须为字母或下划线 3)字符个数不超过32个 4)区分大小写 5)不能使用关键字(保留字) 如:x,sum,_word,lotus_1_2_3 3df,$12, a+b, M.D.John,int 注意:标识符要“见名知意”,变量应“先定义后使用”,变量的特性: 1)应先定义后使用; 2)每一变量被指为一确定类型,在编译时就能为其分配相同的存储单元; 3)指定每一变量属于一类型,便于在编译时,据此检查该变量所进行的运算是否合法,内存,x,例: #define PRICE 30 void main( ) int num,total; num = 10; total = num * PRICE; printf ( total=%d, total); , 定义变量 赋值 赋值,int x; x = -10;,-10,3.1 C的数据类型,数据有一个非常重要特征即数据的类型。 数据类型不仅确定了变量的取值范围、占内存空间大小,而且还确定了变量所能参加的各种运算方式。 例如一个整型(int)类型的数据,占内存空间2字节,取值范围规定为-3276832767之间的整数,能参与算术运算、位运算等。C语言中,每个变量在使用之前必须定义其数据类型。,C的数据类型,C的数据类型,基本类型:由系统事先定义好的不可再分割的类型,可以直接利用这些类型名定义数据。 构造类型:由基本类型组成的更为复杂的类型。 指针类型:一种特殊的、具有重要作用的数据类型,其值用来表示某个量在内存中的地址。 空类型:主要用于特殊指针变量和无返回值函数的说明,注意:数据类型的位数和取值范围与所运行环境有很大关系(例如Turbo C与Visual C+ 6.0会有不同),C的数据类型,3.2 整型,3.2.1整型常量 一、整型常量的表示方法 整型常量即整常数。在语言中,整常数可用以下三种形式表示: (1)十进制整数。 如:123, -456.4。 (2)八进制整数。以数字0开头的数是八进制数。 如:0123表示八进制数123,等于十进制数83 - 011表示八进制数-11, 即十进制数-9。 (3)十六进制整数。以0 x或X开头的数是16进制数。 如:0 x123,代表16进制数123,等于十进制数 291。 -0 x12等于十进制数18 -0X8000L,16进制长整型,等于十进制数32768,二、不合法的整型常量 09876(非十进制,非八进制,因为有数字8和9) 20fa(非十进制,非八进制,不是以0 x开头) 0 xfg(出现了非法字符) 三、整数的表数范围 16位字长的整数表数的范围为-3276832767 用八进制表示则为00177777,用十六进制表示为 0 x00 xFFFF。超出上述范围的整常数,要用长整型(32位)表示。在C语言中,整型数后加l或字母L为长整型。 四、整型常量的分类:基本整型、短整型、常整型、无符号整型,3.2.2整型变量,一、分类:基本整型、短整型、常整型、无符号整型。 二、定义: 1)基本整型变量用int进行定义; 2)一个定义语句必须用分号“;”结束,在一个定义语句中可同时定义多个变量,变量之间用逗号”,”隔开。 3)一般微机为基本整型开辟2个字节的存储单元,允许存放的数值范围是-3276832767,4)C语言规定,可以在变量定义的同时给其赋值,称为变量的初始化。,void main( ) int a = 3; float f = 3.56; char c = a; int i, j, k = 5; int x = 3, y = 5; ,如果变量没有被初始化,变量的初始值将不能确定,变量参与运算前,必须先赋值,否则运算无效!,先定义后使用: 1、必须首先声明; 2、参与运算前必须先赋值,查看运行结果,想想为什么?,程序一: main() int i,j,k; printf(“i=%d,j=%d,k=%dn”,i,j,k); ,程序二: main() int i,j,k; i=10; j=20; k=30; printf(“i=%d,j=%d,k=%dn”,i,j,k); ,5)当程序中用以上方式定义变量i,j,k时,编译程序会为变量i,j,k都开辟存储单元,但并没用在存储单元中存放任何初值。 因此这些存储单元中原有的信息垃圾并没有被清除。这时,变量中的值无意义,只有赋初值才有意义。,3.2.3整型数据的分类,1、分类 1)有符号整型signed 基本整型(int) 2个字节 -3276832767 短整型(short int) 2个字节 -3276832767 长整型(long)4 -21474836482147483647 2)无符号整型unsigned unsigned int 2 065535 unsigned short 2 065535 unsigned long 4 04294967295,2、C语言如何表示 若要表示一个长整型常量,则应该在一个整型常量后加一个字母后缀l或L。如: long i; i=200l;注意:如果一个足够大的数,即使面值在长整型范围内,但数字后未加字母l,也不可代表长整型。 3、无论是短整型还是长整型,都被识别为有符号整型,无符号整数应该在数字末尾加上u或U,长整型无符号整数常数,加lu或LU 注意:无符号常量不能表示成小于0的负数。 -200u不合法,一个整数,如果其值在-32768+32767范围内,认为它是int型,它可以赋值给int型和long int型变量。 一个整数,如果其值超过了上述范围,而在 -2147483637+2147483647范围内,则认为它是为长整型。可以将它赋值给一个long int型变量。 一个整常量后面加一个字母u或U,认为是unsigned int型,如12345u,在内存中按unsigned int规定的方式存放(存储单元中最高位不作为符号位,而用来存储数据)。如果写成-12345u,则先将-12345转换成其补码53191,然后按无符号数存储。,3.2.4整数在内存中的存储形式,1、存储单位 1)在计算机中,内存储器的最小存储单位为“bit”,8个二进制位组成一个字节byte. 2)如果一台计算机系统以两个字节(16个二进制位)来存放一条机器指令,就称这台计算机的字长为16位。 3)最右边一位为“最低位”,最左边一位为“最高位” 4)若是正整数,最高位为“0”,若是负整数,最高位为“1”。,2、存储方式 1)正整数:用两个字节存放最大整数32767 2)负整数 a)C语言中,对于负整数,在内存中是以整数的“补码”形式存放; b)两个字节存放最小整数-32768 3)无符号整数:用两个字节存放一个整数时,若说明为无符号整数,其中最高位不再用来存放整数的符号,16个二进制数位全部用来存放整数,因此无符号整数不可能是负数。这时,16个二进制位中全部是1,它所代表的整数就是最大数65535,=-32768,=-1,例如:整数13在内存中实际存放的情况:,例:整型变量的定义与使用,#include “stdio.h” void main() int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%dn”,c,d); ,运行结果: a+u=22,b+u=-14,例:整型数据的溢出,#include void main()int a,b; a=32767; b=a+1; printf(“%d,%dn”,a,b);,说明: 数值是以补码表示的。一个整型变量只能容纳-3276832767范围内的数,无法表示大于32767或小于-32768的数。遇此情况就发生“溢出”。,运行结果: 32767,-32768,3.3实型,3.3.1实型常量(也称浮点型常量) 一、实型常量的表示方法 实型常量只能用十进制形式表示。 (1)小数形式:0.123 345.0 -34. .679 0.0 小数点不能省略,不能只有一个小数点 绝对值小于1的实型常量,其小数点前面的零可以省略,如;0.123可写为.123,-0.0123e-5可写为.0123e-5。 (2)指数形式:指数部分前加字母e或E 1.2345e3、12345E2、1.2345e3 指数部分必须是整数,字母e或E之前必须有数字,字母e或E 前后以及数字之间不得插空格。,1e3、1.8e-3、-123e-6、-.1e-3 e3、2.1e3.5、.e3、e,规范化的指数形式:,在字母e(或E)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字. 例如: 123.456可以表示为: 123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.00123456e 其中的1.23456e3称为“规范化的指数形式”。,C编译系统将浮点型常量作为双精度来处理。 例如:f = 2.45678 * 4523.65 系统先把2.45678和4523.65作为双精度数,然后进行相乘的运算,得到的乘也是一个双精度数。最后取其前7位赋给浮点型变量f。如是在数的后面加字母f或F(如1.65f, 654.87F),这样编译系统就会把它们按单精度(32位)处理。 实型常量不分单精度和双精度,可赋给单精度和双精度。根据变量的类型,截取实型常量中相应的有校数位。 float a; a=111111.111; 由于float只能接收7位有效数位,最后两位小数不起作用,若改为double,则全部接收。,3.3.2实型变量,1、C语言实型变量分为单精度和双精度 单精度定义:float a,b; 双精度定义:double a,b; 2、浮点型数据在内存中的存放形式 一个浮点型数据一般在内存中占4个字节(32位)。与整型数据的存储方式不同,浮点型数据是按照指数形式存储的。系统把一个浮点型数据分成小数部分和指数部分,分别存放。指数部分采用规范化的指数形式。 小数部分所占位数越多,数据的精度越高,指数部分所占的位数越多,数据的取值范围越大。,3、浮点型变量的分类 浮点型变量分为单精度(float型)、双精度(double型)和长双精度型(long double)三类形式。,4、单精度和双精度的区别 1)一般计算机系统中,为float类型变量分配4个字节的存储单元,为double类型变量分配8个字节的存储单元; 2)Turbo c中单精度实数的取值范围: 10-37 1038并提供7位有效位;小于-1038的数被处理成零值;双精度实数的取值范围: 10-30710308 并提供16位有效位;小于10308的数被处理成零值; 因此double类型的变量中存放的数据比float类型中存放的数据精确很多。,3)在程序中一个实数可以用小数形式表示,也可以用指数形式表示,但在内存中,实数一律是以指数形式存放; 4)注意:在计算机内存中可以精确地存放一个整数,不会出现误差,但整型数值的存放范围小,使用实型数的范围大,但往往存在误差。,例3.4 浮点型数据的舍入误差#include main() float a,b; a=123456.789e5; b=a+20 ; printf(%fn,b); ,说明:一个浮点型变量只能保证的有效数位是7位有效数位,后面的数字是无意义的,并不准确地表示该数。应当避免将一个很大的数和一个很小的数直接相加或相减,否则就会“丢失”小的数,理解7位有效数字 main() float a=123.456789; double b=123.456789; clrscr(); printf(“a=%f, k=%lfn”,a,b); ,输出结果: a=123.456787,b=123.456789,3.3字符型数据,3.3.1字符型常量 一、字符型常量的表示方法 C语言的字符常量是ASCll码字符集里的一个字符,包括字母(大、小写有区别)、数字和标点符号以及特殊字符等,均为半角字符,一个字符常量在内存中占1个字节,因此字符常量不能是全角字符。C语言字符常量有三种表示方法: (1)普通字符常量:用单引号 a A 0 + 单引号内,不能使单撇或反斜杠。 单引号内空格也是一个字符常量,但不能写成两个连续的单引号,(2)用该字符的ASCll码值表示的字符常量 例如: 十进制数65表示大写字母A 十六进制数0X41也表示A 八进制数0101表示大写字母 A 。 一些不能用符号表示的特殊字符(如控制符等),可以用ASCll码值来表示,如换行可用10表示,也可用十六进制数0 x0a或八进制数012来表示,(3)转义字符:是以 开头的用单引号括起来的字符序列。,例如: 用 r表示回车 用n表示换行。换行也可用12或012换行还可用xa或x0a反斜杠后跟十六进制数表示 101 用八进制表示的字符A 在C语言中,字符常量与整数是互通的。经常将字符常量等价为整数参与运算: 如:A +32 结果为 a 0 - 48 为 0,/例3.1:转义字符的使用 #include void main( ) printf( abtcdn); printf ( 12345678012student x42n); ,程序运行结果: ab cd 12345678 student B,3.3.2字符变量 1、字符变量的定义 字符型变量用来存放字符常量,注意只能放一个字符。 字符变量的定义形式如下:char c1,c2; 在本函数中可以用下面语句对c1,c2赋值: c1a;c2 b ; 一个字符变量在内存中占一个字节。,3.3.3字符数据在内存中的存储形式及其使用方法,一个字符常量存放到一个字符变量中,实际上并不是把该字符的字型放到内存中去,而是将该字符的相应的ASCII代码放到存储单元中。这样使字符型数据和整型数据之间可以通用。,注意: 一个字符数据既可以以字符形式输出,也可以以整数形式输出。,例:向字符变量赋以整数 #include main() char c1,c2; c1=97; c2=98; printf(%c,%cn,c1,c2); printf(%d,%dn,c1,c2); ,说明:在第和第4行中,将整数97和98分别赋给c1和c2,它的作用相当于以下两个赋值语句: c1;c2; 因为a和b的ASCII码为97和98,运行结果: , 97,98,例:大小写字母的转换 #include main() char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(%c,%cn,c1,c2); ,说明:程序的作用是将两个小写字母a和b转换成大写字母A和B。从代码表中可以看到每一个小写字母比它相应的大写字母的ASCII码大32。语言允许字符数据与整数直接进行算术运算。,运行结果:,3.3.4字符串,字符串常量 表示形式:用双引号括起来的字符序列。 How do you do., CHINA, a , $123.45 , %dn 字符常量与字符串常量的区别 a与 a 是否相同?abc是否是字符串常量? 是否是字符串常量?两个连续的双引号也是字符串常量,称为空串,占一个字节存放0 字符串的存储形式:存储时每个字符串末尾自动加一个 0作为字符串结束标志。,如:如果有一个字符串常量 ,实际上在内存中是:,它占内存单元不是个字符,而是个字符,最后一个字符为0 。但在输出时不输出0 。,符号常量,C语言中可以用一个变量名来代表一个常量,这个变量名就称为符号常量。可以用两种方式来定义C语言中的符号常量。 利用宏定义 # define来定义符号常量。例如: #define PI 3.14159 #define PRICE 30 则PI、PRICE是符号常量, 在程序中它们的值不能被改变。程序中用符号常量来代替一串不易记忆的数字或一串字符串, 不仅增加了程序的可读性,也减轻了程序设计人员的负担 特点:便于维护、提高程序可读性、语言中习惯用大写字母表示符号常量,以区别变量,例3.2 符号常量的使用 #include #define PI 3.14 /*定义符号常量PI*/ void main() double r,s; r=20.0; s=PI*r*r; /*使用符号常量PI*/ printf(s=%fn,s); ,补充例题 #define PRICE 12.5 main() int num=3; float total; char ch1,ch2=D; total=num*PRICE; ch1=ch2-A+a; printf(“total=%f,ch1=%cn,total,ch1); ,运行结果: total=37.500000, ch1=d,为了方便程序设计者实现一些常用的功能模块,各个编译系统都提供了函数库(将一些基本的常用功能定义成为函数,并将相关的原型声明放在相应的头文件中),库里的这些函数称为库函数。 C的函数库中的每个库函数是一系列的可共享的可执行函数,当我们在自己的C源程序中使用某个库函数时,我们并不需要重复书写一遍该库函数的源代码,只需要直接使用该函数即可。 如:求一个角 x 的正弦值sin(x),或一个正数 x 的开平方sqrt(x)等等,3.4库函数,库函数是系统预先定义好的,分为若干类。 需要注意的是:在程序中调用库函数时,应当根据库函数的种类,在程序的开头使用#include,例如要使用sin(), 或sqrt()等数学函数时,就应当在程序开头加上: #include #include math.h ,例3.3 库函数的调用方式 #include void main() double a=3.5, b=4.5, c=5.5;/*a,b,c表示三角形的三个边*/ double p, s; p=0.5*(a+b+c); s=sqrt(p*(p-a)*(p-b)* (p-c); /*用劳伦公式计算三角形面积*/ printf(area=%f, s); ,头文件包含#include 或#include math.h 1.三角函数sin、cos、tan 函数原型:double sin(double x); double cos(double x); double tan(double x); 函数功能:函数x以弧度为单位,求正弦、余弦及正切值 函数使用: sin(x) cos(x) tan(x),/例3.4 sin、cos、tan函数计算 #include #include #define PI 3.14159void main() double x,y,z,t; x=0.5*PI; y=sin(x); z=cos(x); t=tan(x); printf(%f,%f,%f, x,y,z); ,常用数学函数,2.绝对值函数abs、fabs、labs 函数原型: int abs(int x); 适用于整型绝对值计算 double fabs(double x); 适用于浮点型(双精度型) long labs(long x); 适用于长整型数的绝对值计算 3.exp和pow函数 函数原型: double exp(double x); 函数 求: ex double pow(double x,double y); 函数 求: xy (x!=0,y0) 英文power是“乘方 4.log和log10函数 函数原型: double log(double x);求x的自然对数ln(x) (x0) double log10(double x);以10为底的x的对数值log10(x),5.sqrt函数 函数原型:求平方根(开方) double sqrt(double x); 例如: sqrt(2.0)等于1.414等。 6.随机函数rand、sand 函数原型: int rand(void); void sand(unsigned int seed); 说明:srand是用来设置随机时间的种子,一般与rand()结合使用。否则直接用rand()的话,每次运行程序的结果都相同。,/例3.5 用当前机器时间作随机数产生器,产生3个随机整数 #include #include void main() srand( (unsigned)time( NULL ) ); printf( %6dn, rand() ); printf( %6dn, rand() ); printf( %6dn, rand() ); ,
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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