




已阅读5页,还剩54页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章基本数据类型(1),本章内容介绍,引出:标示符3.1C语言的数据类型3.2整型和实型3.3字符型3.4库函数,补充:什么是标识符,标识符是一个名字,是给程序中的实体(常量、变量、类型、函数、数组、结构体以及文件起的名称,文件名也是标示符。组成:由字母、下划线、数字组成,且标示符必须由字母或下划线开头,否则程序出错。C语言不允许同时定义2个相同变量。C语言不同于其它语言,区分大小写。Area_abc4dd长度:只能识别前8位。建议变量名的长度最好不要超过8个字符,标识符分类,标识符有三类:关键字、预定义标识符和用户定义标识符。1)关键字已被C系统所占用的标识符称为关键字,每个关键字在C程序中都有其特定的作用,关键字不能作为用户标识符。TurboC20的关键字,共32个,所有关键字中只包含小写字母和下划线。,标示符,ANSI标准定义的共32个关键字,标识符分类,2)预定义标识符C语言系统提供的库函数名和编译预处理命令等构成了预定义标识符。printf,scanf等3)用户标识符禁止使用关键字作为用户的标识符尽量避免使用预定义标识符作为用户标识符标识符中不能出现全角字符、空格使用标识符最好做到见名知义标识符必须先定义后使用,否则出现编译错误,标识符,常量的类型,在程序运行过程中,其值不能被改变的量称为常量常量区分为不同类型,1)整型常量:100,-100,07623,0 xa3f2)实型常量:3.14,1.2345e3,-3.7893)字符型常量:a,b,24)字符串常量:123,Goodmorning!5)符号常量:definePI3.14159PI、ESC与ID是符号常量,变量,变量:是值可以改变的量。实质:内存中的存储单元定义方法:数据类型标示符标识符的格式:1)只能使用字母、数字或下划线2)首字符必须为字母或下划线3)字符个数不超过32个4)区分大小写5)不能使用关键字(保留字)如:x,sum,_word,lotus_1_2_33df,$12,a+b,M.D.John,int注意:标识符要“见名知意”,变量应“先定义后使用”,变量的特性:1)应先定义后使用;2)每一变量被指为一确定类型,在编译时就能为其分配相同的存储单元;3)指定每一变量属于一类型,便于在编译时,据此检查该变量所进行的运算是否合法,内存,x,例:#definePRICE30voidmain()intnum,total;num=10;total=num*PRICE;printf(total=%d,total);,定义变量赋值赋值,intx;x=-10;,-10,3.1C的数据类型,数据有一个非常重要特征即数据的类型。数据类型不仅确定了变量的取值范围、占内存空间大小,而且还确定了变量所能参加的各种运算方式。例如一个整型(int)类型的数据,占内存空间2字节,取值范围规定为-3276832767之间的整数,能参与算术运算、位运算等。C语言中,每个变量在使用之前必须定义其数据类型。,C的数据类型,C的数据类型,基本类型:由系统事先定义好的不可再分割的类型,可以直接利用这些类型名定义数据。构造类型:由基本类型组成的更为复杂的类型。指针类型:一种特殊的、具有重要作用的数据类型,其值用来表示某个量在内存中的地址。空类型:主要用于特殊指针变量和无返回值函数的说明,注意:数据类型的位数和取值范围与所运行环境有很大关系(例如TurboC与VisualC+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语言规定,可以在变量定义的同时给其赋值,称为变量的初始化。,voidmain()inta=3;floatf=3.56;charc=a;inti,j,k=5;intx=3,y=5;,如果变量没有被初始化,变量的初始值将不能确定,变量参与运算前,必须先赋值,否则运算无效!,先定义后使用:1、必须首先声明;2、参与运算前必须先赋值,查看运行结果,想想为什么?,程序一:main()inti,j,k;printf(“i=%d,j=%d,k=%dn”,i,j,k);,程序二:main()inti,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短整型(shortint)2个字节-3276832767长整型(long)4-214748364821474836472)无符号整型unsignedunsignedint2065535unsignedshort2065535unsignedlong404294967295,2、C语言如何表示若要表示一个长整型常量,则应该在一个整型常量后加一个字母后缀l或L。如:longi;i=200l;注意:如果一个足够大的数,即使面值在长整型范围内,但数字后未加字母l,也不可代表长整型。3、无论是短整型还是长整型,都被识别为有符号整型,无符号整数应该在数字末尾加上u或U,长整型无符号整数常数,加lu或LU注意:无符号常量不能表示成小于0的负数。-200u不合法,一个整数,如果其值在-32768+32767范围内,认为它是int型,它可以赋值给int型和longint型变量。一个整数,如果其值超过了上述范围,而在-2147483637+2147483647范围内,则认为它是为长整型。可以将它赋值给一个longint型变量。一个整常量后面加一个字母u或U,认为是unsignedint型,如12345u,在内存中按unsignedint规定的方式存放(存储单元中最高位不作为符号位,而用来存储数据)。如果写成-12345u,则先将-12345转换成其补码53191,然后按无符号数存储。,3.2.4整数在内存中的存储形式,1、存储单位1)在计算机中,内存储器的最小存储单位为“bit”,8个二进制位组成一个字节byte.2)如果一台计算机系统以两个字节(16个二进制位)来存放一条机器指令,就称这台计算机的字长为16位。3)最右边一位为“最低位”,最左边一位为“最高位”4)若是正整数,最高位为“0”,若是负整数,最高位为“1”。,2、存储方式1)正整数:用两个字节存放最大整数327672)负整数a)C语言中,对于负整数,在内存中是以整数的“补码”形式存放;b)两个字节存放最小整数-327683)无符号整数:用两个字节存放一个整数时,若说明为无符号整数,其中最高位不再用来存放整数的符号,16个二进制数位全部用来存放整数,因此无符号整数不可能是负数。这时,16个二进制位中全部是1,它所代表的整数就是最大数65535,=-32768,=-1,例如:整数13在内存中实际存放的情况:,例:整型变量的定义与使用,#include“stdio.h”voidmain()inta,b,c,d;unsignedu;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,例:整型数据的溢出,#includevoidmain()inta,b;a=32767;b=a+1;printf(“%d,%dn”,a,b);,说明:数值是以补码表示的。一个整型变量只能容纳-3276832767范围内的数,无法表示大于32767或小于-32768的数。遇此情况就发生“溢出”。,运行结果:32767,-32768,3.3实型,3.3.1实型常量(也称浮点型常量)一、实型常量的表示方法实型常量只能用十进制形式表示。(1)小数形式:0.123345.0-34.6790.0小数点不能省略,不能只有一个小数点绝对值小于1的实型常量,其小数点前面的零可以省略,如;0.123可写为.123,-0.0123e-5可写为.0123e-5。(2)指数形式:指数部分前加字母e或E1.2345e3、12345E2、1.2345e3指数部分必须是整数,字母e或E之前必须有数字,字母e或E前后以及数字之间不得插空格。,1e3、1.8e-3、-123e-6、-.1e-3e3、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位)处理。实型常量不分单精度和双精度,可赋给单精度和双精度。根据变量的类型,截取实型常量中相应的有校数位。floata;a=111111.111;由于float只能接收7位有效数位,最后两位小数不起作用,若改为double,则全部接收。,3.3.2实型变量,1、C语言实型变量分为单精度和双精度单精度定义:floata,b;双精度定义:doublea,b;2、浮点型数据在内存中的存放形式一个浮点型数据一般在内存中占4个字节(32位)。与整型数据的存储方式不同,浮点型数据是按照指数形式存储的。系统把一个浮点型数据分成小数部分和指数部分,分别存放。指数部分采用规范化的指数形式。小数部分所占位数越多,数据的精度越高,指数部分所占的位数越多,数据的取值范围越大。,3、浮点型变量的分类浮点型变量分为单精度(float型)、双精度(double型)和长双精度型(longdouble)三类形式。,4、单精度和双精度的区别1)一般计算机系统中,为float类型变量分配4个字节的存储单元,为double类型变量分配8个字节的存储单元;2)Turboc中单精度实数的取值范围:10-371038并提供7位有效位;小于-1038的数被处理成零值;双精度实数的取值范围:10-30710308并提供16位有效位;小于10308的数被处理成零值;因此double类型的变量中存放的数据比float类型中存放的数据精确很多。,3)在程序中一个实数可以用小数形式表示,也可以用指数形式表示,但在内存中,实数一律是以指数形式存放;4)注意:在计算机内存中可以精确地存放一个整数,不会出现误差,但整型数值的存放范围小,使用实型数的范围大,但往往存在误差。,例3.4浮点型数据的舍入误差#includemain()floata,b;a=123456.789e5;b=a+20;printf(%fn,b);,说明:一个浮点型变量只能保证的有效数位是7位有效数位,后面的数字是无意义的,并不准确地表示该数。应当避免将一个很大的数和一个很小的数直接相加或相减,否则就会“丢失”小的数,理解7位有效数字main()floata=123.456789;doubleb=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)普通字符常量:用单引号aA0+单引号内,不能使单撇或反斜杠。单引号内空格也是一个字符常量,但不能写成两个连续的单引号,(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结果为a0-48为0,/例3.1:转义字符的使用#includevoidmain()printf(abtcdn);printf(12345678012studentx42n);,程序运行结果:abcd12345678studentB,3.3.2字符变量1、字符变量的定义字符型变量用来存放字符常量,注意只能放一个字符。字符变量的定义形式如下:charc1,c2;在本函数中可以用下面语句对c1,c2赋值:c1a;c2b;一个字符变量在内存中占一个字节。,3.3.3字符数据在内存中的存储形式及其使用方法,一个字符常量存放到一个字符变量中,实际上并不是把该字符的字型放到内存中去,而是将该字符的相应的ASCII代码放到存储单元中。这样使字符型数据和整型数据之间可以通用。,注意:一个字符数据既可以以字符形式输出,也可以以整数形式输出。,例:向字符变量赋以整数#includemain()charc1,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,例:大小写字母的转换#includemain()charc1,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字符串,字符串常量表示形式:用双引号括起来的字符序列。Howdoyoudo.,CHINA,a,$123.45,%dn字符常量与字符串常量的区别a与a是否相同?abc是否是字符串常量?是否是字符串常量?两个连续的双引号也是字符串常量,称为空串,占一个字节存放0字符串的存储形式:存储时每个字符串末尾自动加一个0作为字符串结束标志。,如:如果有一个字符串常量,实际上在内存中是:,它占内存单元不是个字符,而是个字符,最后一个字符为0。但在输出时不输出0。,符号常量,C语言中可以用一个变量名来代表一个常量,这个变量名就称为符号常量。可以用两种方式来定义C语言中的符号常量。利用宏定义#define来定义符号常量。例如:#definePI3.14159#definePRICE30则PI、PRICE是符号常量,在程序中它们的值不能被改变。程序中用符号常量来代替一串不易记忆的数字或一串字符串,不仅增加了程序的可读性,也减轻了程序设计人员的负担特点:便于维护、提高程序可读性、语言中习惯用大写字母表示符号常量,以区别变量,例3.2符号常量的使用#include#definePI3.14/*定义符号常量PI*/voidmain()doubler,s;r=20.0;s=PI*r*r;/*使用符号常量PI*/printf(s=%fn,s);,补充例题#definePRICE12.5main()intnum=3;floattotal;charch1,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#includemath.h,例3.3库函数的调用方式#includevoidmain()doublea=3.5,b=4.5,c=5.5;/*a,b,c表示三角形的三个边*/doublep,s;p=0.5*(a+b+c);s=sqrt(p*(p-a)*(p-b)*(p-c);/*用劳伦公式计算三角形面积*/printf(area=%f,s);,头文件包含#include或#includemath.h1.三角函数sin、cos、tan函数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中语文苏教版必修三学案专题一文本2汉字王国中的“人”
- 内江中考数学试卷
- 木高冬令营数学试卷
- 历年河北高考数学试卷
- 硫酸生产线项目组织管理方案
- 建筑环境优化设计方案
- 城市集中供热工程运营方案
- 前期调研数学试卷
- 火灾自动报警系统升级方案
- 叶酸培训课件
- 2025年内河船员考试(主推进动力装置2103·一类三管轮)历年参考题库含答案详解(5套)
- 公司不交社保合作协议书
- 城市轨道交通工程监测技术
- 2025年海南省财金集团有限公司招聘笔试冲刺题(带答案解析)
- 2025年新七年级数学暑假衔接 (人教版)专题05 有理数的加法和减法 (3知识点+10大题型+思维导图+过关测) (学生版)
- 2025年综合基础知识题库(含答案)
- 恙虫病疑难病例讨论记录
- 患者知情同意培训
- 骨灰管理员职业技能鉴定经典试题含答案
- (正式版)HGT 6313-2024 化工园区智慧化评价导则
- Peppa+Pig第1234季字幕整理
评论
0/150
提交评论