




已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
李静霞 电话Email: 测控技术研究所,第二章 数据类型,C语言的基本元素 常量和变量的概念 各种数据类型,内容提要:,C语言的基本元素,关键字(Keyword) 标识符(Identifier) 运算符(Operator) 分隔符(Separator) 空格、回车/换行、逗号等 其它符号 花括号“”和“”用来标识函数体或者语句块 “/*”和“*/”是程序注释所需的定界符 数据(Data) 常量(Variable) 变量(Constant),C语言的基本元素,关键字 也成保留字,它是C语言中具有特定含义,专门用作语言特定成分的一类符号。只能按照预先规定的含义使用,不能擅自改变其含义。 ANSI推荐的C语言的关键字是32个 数据类型关键字:int char float等 流程控制关键字:if else break等,注意:(1)关键字都有固定意义,不能擅自改变其含义。 (2)所有关键字都必须小写。 例:else与ELSE代表不同含义。 else是关键字,ELSE是用户自定义标识符。,C语言的基本元素,标识符 用来标记常量、变量、函数及文件名字的字符序列。可分为: 系统预定标识符:系统预先定义好的标识符。如:主函数名main、库函数名printf等 系统预定义标识符和关键字的区别:前者允许用户赋予新的含义,但这样左会失去原先的预先定义的含义,使用不当还会使程序出错。不提倡这种做法。 用户自定义标识符:用户根据需要自行定义的标识符。如:变量名、自定义函数名max等。,C语言的基本元素,标识符的构成规则: 必须以字母(大小写皆可)或下划线开头。 随后可跟若干个(包括0个)字母、数字、下划线,例: x y3 _imax ELSE X A_to_B 7x int #No bad one re-input,C语言的基本元素,注意: 不允许使用关键字作为标识符的名字,同时不应该与库函数名重名。 例:int,float, for, sin等 标识符命名应“见名知意”。 标识符区分大小写。,例:SUM、sum、Sum是三个标识符,C语言的基本元素,运算符,(1)算数运算符:+ - * / % (2)关系运算符: = = = (5)增1和减1运算符:+ - (6)条件运算符:? : (7)强制类型转换运算符:(类型名) (8)指针和地址运算符:* & (9)计算字节数运算符:sizeof (10)下标运算符: (11)结构体成员运算符:- . (12)位运算符: | & (13)逗号运算符:,C语言的基本元素,数据 是操作的对象,表现形式的不同分为:,常量(Constant) 在程序中不能改变其值的量。 变量(Variable) 在程序运行期间,其值是可以改变的量。,常量,按照类型分类:整型常量、实型常量、字符型常量、字符串常量、枚举常量,(1)整型常量 十进制常量:123,-1,0 八进制常量:0123 十六进制常量:0x123 (2)实型常量 小数形式:12.34,-12.34 指数形式:1.234e-5,常量,(3)字符常量 a 转义字符:n等 (4)字符串常量 由双引号括起来的字符序列 如: “123”, “abc” , “hello world” C规定:在每一个字符串常量的结尾加一个“字符串结束标志”,以便系统据此判断字符串是否结束。 C规定以字符0作为字符串结束标志。它不引起任何控制动作,也不显示,常量,例:如果有一个字符串常量“ ”,实际上在内存中是:,它占内存单元不是5个字符,而是6个字符,最后一个字符为0。但在输出时不输出0。,例:a是字符常量, “a”是字符串常量,二者不同,常量,(5) 枚举常量 “一一举列”之意,用来表示有限个数据值 例:一个星期只有七天,一年有十二个月 enum weekday Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday;,常量,符号常量(宏常量):用一个标识符代表一个常量。 符号常量定义方法:#define 标识符 常量,例:#define PRICE 30 void main() int num, total; num=10; total=num* PRICE; printf(“total=%d”, total); ,注意: (1)符号常量名习惯上用大写 (2)符号常量的值在其作用域内不能改变,也不能再被赋值 (3)宏常量没有数据类型,优点: (1)含义清楚 (2)需要改变一个常量时能做到“一改全改”,const常量:声明具有某种数据类型的常量。 const常量定义方法:const 类型 标识符=常量,例:const double PI=3.14159,变量,用标识符(变量名)来表示。 - 只能以字母、数字、下划线组成,且以字母或下划线开头。 - 见名知意 - 先定义后使用,变量,定义方法: 类型关键字 变量名; 类型关键字 变量名1, 变量名2, ;,分类:整型变量、实型变量、字符型变量、指针型变量,int a; float a, b, c;,变量赋初值,(1) C 语言允许在定义变量的同时使变量初始化 如: int a=3; / 指定a为整型变量,初值为3 float f=3.56; / 指定f为浮点型变量,初值为3.56 char c= a; / 指定c为字符变量,初值为a (2)可以使被定义的变量的一部分赋初值。 如: int a, b, c=5; /指定a、b、c为整型变量,但只对c初始化,c的初值为5,变量赋初值,(3) 对几个变量赋以同一个初值 int a=b=c=3; int a=3,b=3,c=3;,变量,变量代表内存中具有特定属性的一个存储单元,它用来存放数据,这就是变量的值。 从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。,变量名和变量值是两个不同的概念。变量名实际上是以一个名字代表的一个存储地址。通过变量名找到相应的内存地址,从该存储单元中读取数据。,C的数据类型,高级语言中为什么要引入数据类型? 对计算机系统和硬件而言,数据类型的概念是不存在的 引入数据类型的主要目的:,- 有效地组织数据,把数据分成所需内存空间大小不同的数据 - 规范数据的使用 - 提高程序的可读性 - 方便用户的使用,C的数据类型,不同类型的数据代表不同的,数据表示形式 占用内存空间大小 合法的取值范围 可参与的运算种类,整型数据,整型数据:只有整数部分,没有小数部分。,(1) 十进制整数 如:123, -456 (2) 八进制整数,以0头的数是八进制数 如:0123表示八进制数123,等于十进制数83,-011表示八进制数-11,即十进制数-9 (3) 十六进制整数,以0x开头的数是16进制数 如:0x123,代表16进制数123,等于十进制数 291。 -0x1F,等于十进制数-31。 (4) 二进制整数 如:00010001,等于十进制数17。 -00011111,等于十进制数 -31 。,十进制数 用0-9这10个数中的一个表示十进制的一位数 逢10进1的进位原则,基为10 每位数字都有一个权值,是10的幂次 十进制表示的数值可以写成按位权展开的多项式之和 例:十进制数字123.45可表示为 1102+2101+3100+410-1+510-2,二进制数 用0或1表示二进制的一位数 逢2进1的进位原则,基为2 每位数字都有一个权值,是2的幂次 二进制表示的数值可以写成按位权展开的多项式之和 例:二进制数字101.11可表示为 122+021+120+121+12-2=5.75 二进制数101.11对应于十进制数5.75,如何表示二进制的正、负?,0为正,1为负,0如何表示? +0的二进制:00000000 00000000 -0的二进制: 10000000 00000000,负数以二进制补码(Complement)形式存储 便于用统一的形式表示0 运算简单,将减法转为加法处理,补码如何计算? 正数的反码、补码与其原码都是相同的 对于负数,保持符号位不变,原码反码反码+1补码 +0和-0的补码是相同的,符号位,-1的补码如何计算?,符号位,二进制的压缩表示:八进制、十六进制 二进制八进制(3位一组),二进制、十进制、八进制转化表,二进制十六进制(4位一组,以ABCDEF分别表示10-15),二进制、十进制、十六进制转化表,整型数据,整型数据有不同的类型 根据数值的取值范围,分为基本整型int、短整型short (int)、长整型long (int) 为了充分利用数据取值范围,又进一步分为有符号整型signed(系统默认为有符号)、无符号整型unsigned,整数13在内存中实际存放的情况:,0,0,0,一个整型变量只能容纳-3276832767范围内的数,遇此情况就发生溢出。,例:#include void main() int a,b; a=32767; b=a+1; printf(“%d,%dn”,a,b); ,运行结果: 32767,-32768,整型数据,整型数据超出取值范围时,数据呈现环形变化: 32767+1=-32768 32767+2=-32767 -32768-1=32767 -32768-2=32766,浮点型数据,浮点型数据(实型)表示方法,(1) 十进制小数形式 如:3.14,9.8。 (2) 指数形式 如:3.14e5,-3.14E-5 注意:字母e(或E)的前后必须有数字,且e后面的数字必须为整数。 例:1e3、1.8e-3、-123e-6 e3、1.8e3.5、e 可以有多种指数表示形式浮点数 如:123.456可以表示为:123.456e0、12.3456e1、1.23456e2、0.123456e3,规范化的指数形式:在字母e(或E)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字。,浮点型数据,浮点型数据数值的取值范围,可分为:单精度(float)、双精度(double)、长双精度(long double)三种形式,注意:浮点型数据的舍入误差,浮点型数据,例:#include void main() float a, b; a= 123456.789e5; b=a+20; printf(“%fn %fn”, a,b); ,运行结果:12345678848.000000 12345678848.000000,避免将一个很大的数和一个很小的数直接相加减,大数吞小数,造成舍入误差。,浮点型数据,注意:实型内存存储格式的特殊性,无论是小数表示(12.34)还是指数表示(1.2e-5),在内存中都是用浮点方式存储的。 实数:N=Srj 浮点数在计算机中的存储格式:,尾数(正负均可),一般为纯小数,阶码(正负均可),必须是整数,基数,阶码所占位数决定实数的取值范围,尾码所占的位数决定实数的精度,系统使用更多位来存储小数部分(尾数) 系统使用更多的位存储指数部分(阶码) 扩大了取值范围,但精度降低,增加了数值有效数字位数,提高数值精度,但数值取值范围缩小,浮点数并非真正意义上的实数,只是其在某种范围内的近似,字符型数据,字符型(char)数据就是字符,不具计算能力的文字数据类型 字符型数据是用单引号括起来的一个字符。 例如: a 、 b 、 = 、 + 、 ? abc、“a”,字符型数据,在C语言中,字符型数据有以下特点: - 字符型数据只能用单引号括起来,不能用双引号或其它括号。 - 字符型数据只能是单个字符,不能是字符串。 - 字符可以是字符集中任意字符。但数字被定义为字符型之后 就不能参与数值运算。如5和5是不同的。,转义字符是一种特殊的字符 - 转义字符以反斜线“开头,后跟一个或几个字符。转义字符 具有特定的含义,不同于字符原有的意义,故称“转义”字符。,x30、x41、x61分别表示字符0、A和a 060、101、141分别表示字符0、A和a,字符型数据,字符数据以二进制编码方式存储在内存中 - 一个字节保存一个字符 - 字符数据就是一个普通的整数 - 字符编码方式取决于计算机系统所使用的字符集 - ASCII(美国标准信息交换码)字符集 - 每个字符具有一个0127之间的编码值 - 可以从ASCII码表中查出,字符型数据和整型数据之间可以通用。一个字符数据既可以以字符形式输出,也可以以整数形式输出。,字符型数据,例:#include main() char ch= b; ch=b-32; printf(“%c, %d”, ch, ch); ,运行结果:B, 66,只要不超过ASCII码取值范围,char数据和int数据之间可以相互转换。 大、小写英文字母的ASCII码相差32。,字符型数据,字符串和字符之间主要有以下区别: 字符由单引号括起来,字符串由双引号括起来。 字符只能是单个字符,字符串则可以含一个或多个字符。 可以把一个字符型数据赋予一个字符变量,但不能把一个字符串赋予一个字符变量。在C语言中没有相应的字符串变量,也就是说不存在这样的关键字,将一个变量声明为字符串。但是可以用一个字符数组来存放一个字符串,这将在数组一章内予以介绍。 字符占一个字节的内存空间。字符串占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符“0“ (ASCII码为0)。这是字符串结束的标志。,Turbo C+下基本数据类型取值范围,基本数据类型,注意:,同种数据类型在不同的平台所占字节数不尽相同 用sizeof获知数据类型的长度。 当数值超过该类型取值范围时,会产生数值溢出(运行时不报错)。 不同类型浮点型数据,精度不同,会产生舍入误差。 字符型和整型存在一定关系。,数据类型的转换,转换方式有两种:自动类型转换;强制类型转换,1. 自动类型转换,存储长度较短,存储长度较长,这种类型转换是由系统自动进行的。,数据类型的转换,例:int x=2;float y=1.6;char c=A;,65(int),数据类型的转换,2. 强制类型转换 一般形式为: (类型名) 表达式 (double)a 将变量a强制转换为double类型 (int)(x+y) 将x+y强制转换为int类型 (float)(5%3) 将5%3强制转换为float类型 (flo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚子女抚养费及父母共同财产分割及子女教育协议
- 离婚协议中未涉及财产分割的详细约定
- 离婚协议中房产分割、车辆处理与共同债务的全文指南
- 燃气工程交接验收方案
- 个人房产租赁贷款合同范本:房产租赁项目借款协议
- 离婚协议违约金及共同债务承担与子女抚养合同
- 供水厂污泥处理与资源化利用方案
- 兴义校园安全教育活动
- 夫妻离婚协议流程辅导与财产分割、子女抚养合同
- 电竞战队冠名赞助协议范本
- 燃气经营企业从业人员专业培训考核大纲(试行)
- 监狱医疗面试真题及答案
- 中国共产主义青年团纪律处分条例试行解读学习
- 国家能源集团陆上风电项目通 用造价指标(2024年)
- 2025年江西工业贸易职业技术学院单招职业倾向性考试题库附答案
- 医疗机构工作人员廉洁从业九项准则
- 弹个车合同协议
- “十五五”期间新型公共文化空间建设趋势及展望
- 肾小管酸中毒的药物治疗原则及用药时机
- 2025年《幼儿园区角活动》标准课件
- 2025年公路路面修复劳务承包合同
评论
0/150
提交评论