03 第三章 C 数据类型1_第1页
03 第三章 C 数据类型1_第2页
03 第三章 C 数据类型1_第3页
03 第三章 C 数据类型1_第4页
03 第三章 C 数据类型1_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章:C数据类型,数据:,数据是对事实、概念或指令的一种特殊表达形式,这种特殊的表达形式可以用人工的方式或者用自动化的装置进行通信、翻译转换或者进行加工处理。采用二进制编码表示的数字、文字、图画、声音和活动图象才能由计算机进行处理。是程序加工处理的对象,数据区分为,数值型数据非数值型数据文字图形声音活动影像,数据的表示,计算机内所有信息都是用二进制数表示的,原因如下:容易实现工作可靠逻辑判断方便运算规则简单思考:数值怎样以二进制数的形式存储在计算机内?计算机内的二进制代码怎样表示不同的意义?,提示:,计算机只能识别二进制机器码,那么计算机怎样处理人们日常的事物呢?-通过编码形成数据日常人们运算使用十进制,计算机怎样识别与表示呢?-通过数制转换形成数据还有符号位/定/浮点表示及相关运算,都通过特定的数据来表示、存储、运算。计算机用特定类型的数据表示特定信息,C语言对程序中要用到的每一个变量都要事先指定它的数据类型!,为什么要指定数据类型?,1不同类型的数据在内存中占据不同长度的存储区。2不同类型的数据取值范围不同。3不同类型的数据有不同的操作。,C数据类型,1基本类型,2构造类型,3指针类型,整型,字符型,浮点型,单精度,双精度,数组,结构体,共用体,枚举,短整型,长整型,C语言中的数据,有常量和变量之分,它们分别属于上述这些类型。本章将介绍基本类型中的整型、实型和字符型三种数据。,常量,1.常量的概念在程序运行过程中,其值不能被改变的量称为常量。2.常量的分类(1)整型常量(如12、0、-3为整型常量)(2)实型常量(4.6、-1.23为实型常量)(3)字符常量(a、d字符常量)(4)符号常量:有时为了使程序更加清晰和便于修改,用一个标识符来代表常量,即给某个常量取个有意义的名字,这种常量称为符号常量。例:#definePI3.14使用符号常量的好处:(a)含义清楚、见名知意。(b)修改方便、一改全改。,例:,#definePI3.14main()floatarea;area=10*10*PI;printf(area=%fn,area);结果:area=314.000000,变量,1.变量的概念在程序运行过程中,其值可以被改变的量称为变量。2.变量的两个要素(1)变量名。每个变量都必须有一个名字变量名,变量命名遵循标识符命名规则。(2)变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。,变量在内存中的存储,变量定义方式:,存储类型类型名变量名,变量定义:,在C语言中,变量必须先定义,后使用,若没有定义变量直接在程序中使用变量:student_num=30;则编译时会指出未定义错误。,若程序中有:intstudent_num;/*变量定义*/:student_num=30;/*给变量赋值*/则student_num变量是合法的。,标识符命名规则,(1)有效字符:只能由字母、数字和下划线组成,且以字母或下划线开头。(2)有效长度:随系统而异,但至少前个字符有效。如果超长,则超长部分被舍弃。例如,由于student_name和student_number的前个字符相同,有的系统认为这两个变量,是一回事而不加区别。在TCV2.0中,变量名(标识符)的有效长度为个字符,缺省值为。(3)C语言的关键字不能用作变量名。(4)C语言对英文字母的大小写敏感,即同一字母的大小写,被认为是两个不同的字符。习惯上,变量名和函数名中的英文字母用小写,以增加可读性。思考题:在C语言中,变量名total与变量名TOTAL、ToTaL、tOtAl等是同一个变量吗?,变量命名规则,遵循的原则:1.标识符应当直观且可以拼读,可望文知意2.标识符的长度应当符合“min-lengthfloatx,y,z;倘若采用“匈牙利”命名规则,则应当写成intiI,iJ,ik;/前缀i表示int类型floatfX,fY,fZ;/前缀f表示float类型,整型数据,1.分类根据占用内存字节数的不同,整型变量又分为类:(1)基本整型(类型关键字为int)。(2)短整型(类型关键字为shortint)。(3)长整型(类型关键字为longint)。(4)无符号整型。无符号型又分为无符号基本整型(unsignedint)、无符号短整型(unsignedshort)和无符号长整型(unsignedlong)三种,只能用来存储无符号整数,变量类型类型名占用的内存空间(字节)范围短整型int或shortint2-3276832767长整型long或longint4-21474836482147483647无符号短整型unsigned或unsignedint2065536无符号长整型unsignedlong404294967295,掌握重点:占用内存字节数与值域,占用内存字节数为n的(有符号)整型变量,其值域为:-2n*8-1(2n*8-1-1);无符号整型变量的值域为:0(2n*8-1)。,Unsignedint:,int:,例:变量定义,inta,b,c;或:inta;intb,c;,shortinta,b,c;或:shorta,b,c;,longintx,y,z;或longx,y,z;,unsignedm,n,t;或unsignedshortm,n,t;unsignedlongd,k,l;,整型常量.三种表示形式整型常量即整常数,在语言中可用三种形式表示:(1)十进制(数码取值:09)。例如10、36。(2)八进制(以数字开头,数码取值:07)。例如012。(3)十六进制(以数字+小/大写字母x开头,数码取值:AF或af)。例如0 x36,0X5A。课堂练习:判断以下常量是否合法?9A、0X6G、029,等等2.类型匹配规则为:一个整型常量,可以赋给能容纳下其值的整型变量。例如,其值在-(-)的整型常量,可以赋给int型变量和longint型变量;其值在-(-)的整型常量,就只能赋给longint型变量。,实型数据,实型常量的表示方法实型(浮点型)有两种表示形式:1、十进制小数形式。由数字09和小数点组成(必须有小数点)。例如:.123、123.、123.0、0.02、指数形式。格式:aEn。(a:十进制数n:阶码(只能为整数,可以带符号)例如:123e3、123E3都是实数的合法表示。,实型变量的分类,实型变量分为:单精度(float)、双精度(double)。单精度:其类型说明符为float单精度说明符双精度:double双精度说明符。在TurboC中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-383.4E+38,只能提供七位有效数字。双精度型占8个字节(64位)内存空间,其数值范围为1.7E-3081.7E+308,可提供16位有效数字。,实型变量说明的格式和书写规则与整型相同。类型说明符变量名标识符,变量名标识符,.例如:floatx,y;(x,y为单精度实型量)doublea,b,c;(a,b,c为双精度实型量)说明:1、实型常数不分单、双精度,都按双精度double型处理。2、实型常量可以赋值给一个float、double、longdouble型变量。根据变量的类型截取实型常量中相应的有效数字。,字符型数据,1.字符常量的定义用一对单引号括起来的单个字符,称为字符常量。例如,A、等。字符常量的特点:1.字符常量只能用单引号括起来,不能用双引号或其它括号。2.字符常量只能是单个字符,不能是字符串。3.字符可以是字符集中任意字符。但数字被定义为字符型之后就不能参与数值运算。如5和5是不同的。5是字符常量,不能参与运算。2.转义字符语言还允许使用一种特殊形式的字符常量,就是以反斜杠“”开头的转义字符。注意:如果反斜杠或单引号本身作为字符常量,必须使用转义字符:。,字符变量,字符变量的类型关键字为char,一般占用1字节内存单元。1.变量值的存储字符变量用来存储字符常量。将一个字符常量存储到一个字符变量中,实际上是将该字符的ASCII码值(无符号整数)存储到内存单元中。例如,charch1,ch2;/*定义两个字符变量:ch1,ch2*/ch1=a;ch2=b;/*给字符变量赋值*/,特性,字符数据在内存中存储的是字符的ASCII码一个无符号整数,其形式与整数的存储形式一样,所以语言允许字符型数据与整型数据之间通用。(1)一个字符型数据,既可以字符形式输出,也可以整数形式输出。案例字符变量的字符形式输出和整数形式输出。main()charch1,ch2;ch1=a;ch2=b;printf(“ch1=%c,ch2=%cn”,ch1,ch2);printf(“ch1=%d,ch2=%dn”,ch1,ch2);程序运行结果:ch1=a,ch2=bch1=97,ch2=98,特性,2)允许对字符数据进行算术运算,此时就是对它们的ASCII码值进行算术运算。案例字符数据的算术运算。main()charch1,ch2;ch1=a;ch2=B;/*字母的大小写转换*/printf(“ch1=%c,ch2=%cn”,ch1-32,ch2+32);printf(“ch1=%d,ch2=%dn”,ch1-32,ch2+32);,字符串常量,字符串常量的概念和字符串长度字符串常量是用一对双引号括起来的若干字符序列。字符串中字符的个数称为字符串长度。长度为0的字符串(即一个字符都没有的字符串)称为空串,表示为“”(一对紧连的双引号)。例如,“Howdoyoudo.”、“Goodmorning.”等,都是字符串常量,其长度分别为14和13(空格也是一个字符)。如果反斜杠和双引号作为字符串中的有效字符,则必须使用转义字符。例如:(1)C:msdosv6.22C:msdosv6.22(2)Isay:Goodbye!Isay:Goodbye!,字符串的存储,C语言规定:在存储字符串常量时,由系统在字符串的末尾自动加一个0作为字符串的结束标志。注意:在源程序中书写字符串常量时,不必加结束字符0,否则画蛇添足。如果有一个字符串为“CHINA”,则它在内存中的实际存储如下所示:最后一个字符0是系统自动加上的,它占用字节而非字节内存空间。,综上所述,字符常量A与字符串常量A是两回事:(1)定界符不同:字符常量使用单引号,而字符串常量使用双引号;(2)字符常量只能是单个字符,字符串常量则可以含一个或多个字符。(3)可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。(4)字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字符数加1。增加的一个字节存放字符0(ASCII值为0),这是字符串的结束标志。,数据类型转换,(1)在语言中,整型、实型和字符型数据间可以混合运算(因为字符数据与整型数据可以通用)。如果一个运算符两侧的操作数的数据类型不同,则系统按“先转换、后运算”的原则,转换的方法有两种:自动转换(隐式转换);强制转换。1、自动动转换(隐式转换)自动转换发生在不同类型数据进行混合运算时,由编译系统自动完成。转换规则:(参看下页图示)(1)类型不同,先转换为同一类型,然后进行运算。,数据类型转换,(2)图中纵向的箭头表示当运算对象为不同类型时转换的方向。可以看到箭头由低级别数据类型指向高级别数据类型,即数据总是由低级别向高级别转换。即按数据长度增加的方向进行,保证精度不降低。(3)图中横向向左的箭头表示必定的转换(不必考虑其它运算对象)。如字符数据参与运算必定转化为整数,float型数据在运算时一律先转换为双精度型,以提高运算精度(即使是两个float型数据相加,也先都转换为double型,然后再相加)。(4)赋值运算,如果赋值号“=”两边的数据类型不同,赋值号右边的类型转换为左边的类型。这种转换是截断型的转换,不会四舍五入。,强制转换,强制转换是通过类型转换运算来实现。一般形式:(类型说明符)表达式功能:把表达式的结果强制转换为类型说明符所表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论