




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3讲,常量、变量与标志符 整型、实型、字符型数据,第二章 数据类型、运算符、表达式,能够输入到计算机并由计算机进行处理的对象称为数据。 每一数据具有各自的数据类型。数据类型决定数据在内存中的存储长度和存储格式。 运算符描述对数据执行何种操作。C语言中的运算处理功能都是由运算符来实现的。 表达式是运算符连接起来的一系列操作。表达式都有一个值,即运算结果。,本章教学目标,掌握数据及数据类型、算术运算符、赋值运算符、逗号运算符、自增(减)运算符及其上述运算符组成的表达式的基本概念, 熟悉运算规则(运算符的优先级和结合性)、表达式计算中的类型转换规则 了解各种类型数据在计算机中的存储形式 基本要求:能正确地将数学公式用表达式表示,2.1 C语言的数据类型,数据按在内存中的存储形式可分:基本类型、构造类型、指针类型、空类型 基本数据类型包括整型(基本整型、短整型、长整型、无符号基本整型、无符号短整型、无符号长整型)、实型(单精度实型、双精度实型)和字符型。 根据数据的值在程序运行过程中是否发生变化,可分为常量和变量。,图2.1,2.2 常量、变量与标识符,在源程序中明确指明,在程序运行前就知道,而且在程序运行过程中不会发生变化。 常量类型: 整型常量,如:123、-321、0 实型常量,如:12.3、2.0 字符常量,如:a、b、7、# 符号常量,用一个标识符来代表,其值在其作用域内不能改变,也不能被赋值,一般在程序中需要多次使用某个常量时使用。,1. 常量,例2.1 符号常量的使用,符号常量必须先定义,后使用。 定义格式为: #define 常量名 字符串 习惯上用大写字母来标识符号常量,用小写字母来标识变量或函数。,例2.1:符号常量的使用 #define PI 3.14159 main( ) float r, l, area; r=3.5; l=2*PI*r; area=PI*r*r; printf(“l=%f, area=%fn”, l, area); ,2. 变量,在程序运行过程中其值可以在一定范围内变化 在计算机的内存中占据一定的存储单元,在相应的存储单元中存放着变量的值。 变量名:用来标识一个变量的标识符,也就是变量的名字。习惯上变量名用小写字母表示,以增加其直观性和可读性。 变量值:变量的值,即在变量的存储单元中存放的数值。 C语言规定在程序中所有要用到的变量在使用前必须先指定其类型,称为变量定义或变量说明。,3. 标识符,C语言中,标识符可以用作变量名、符号名、函数名和后面将要学到的数组名、文件名以及一些具有专门含义的名字。 合法的标识符只能由字母、数字和下划线等三种字符组成,并且第一个字符必须为字母或下划线。 在C语言的标识符中,大写字母和小写字母是两个不同的字符, 对于标识符的长度,一般的计算机系统规定取前8个字符有效,如果长于8个字符,多余的字符将不被识别。有些系统允许取较长的名字,读者在取名时应当了解所用系统的具体规定。,标识符的分类,C语言的标识符可以分为以下三类。 关键字 C语言规定的一批标识符,它们在程序中都代表着固定的含义,不能另作它用。 预定义标识符 在C语言中也都有特定的含义,允许另作它用,但这将使这些标识符失去系统规定的原意。 用户标识符 用户根据需要定义,一般用来给变量、函数、数组或文件等命名。除要遵循标识符的命名规则外,还应注意做到“见名知义”,即选择的用户标识符应具有相关含义,以增加程序的可读性。 如果用户标识符与关键字相同,程序在编译时将给出出错信息,如果与预定义标识符相同,系统并不报错,只是该预定义标识符将失去原定含义,代之以用户确认的含义,可能会引发一些运行时的错误。,2.3 整型数据,整型数据包括整型常量和整型变量。,1.整型常量 (1) 十进制形式,如:100,0,-100 (2) 八进制形式,以数字0开头的八进制数 ,如:0157 ,即(157)8,其对应的十进制数值为:182+581+780,即111。八进制数中的数位符号只能有8 个,即07。 (3) 十六进制形式,以数字字母0x开头的十六进制数,如:0x157表示十六进制数157 ,即(157)16,其对应的十进制数值为:1162+5161+7160,即343。十六进制数中的数位符号为数字字符09和英文字母AF等16个字符。 C语言自动按常量的范围决定其类型。同时允许用户在整型常量后面加上字符L(或l)表示长整型数据,2.整型变量,整型变量可以分为基本整型、短整型、长整型和无符号整型四种。本节只介绍基本整型的变量。 C语言规定在程序中所有要用到的变量,在使用前必须先指定其类型,即对变量进行“定义”或者说明。 基本整型的变量用类型名关键字int 进行定义,定义形式如下: int k; /*定义变量k为整型变量*/ int x1, x2, x3; /*定义变量x1, x2和x3均为整型变量*/ 一般微机都会为每个已定义的基本整型的变量在内存中开辟2个连续的存储单元,一个存储单元可以存放8位的二进制信息,一个基本整型的变量中具有16位的二进制信息,其中的最高数值位为符号位,它所能表示的数值范围为:-3276832767。,3. 整型数据分类,无符号型数据和其相应的有符号型数据占用相同的存储空间 不同的C语言处理系统对这几类整型数所占用的字节数和数值范围有不同规定,只要求长整型(long)数据所占字节数不少于基本整型(int),短整型(short)不多于基本整型 标准C基本整型占2个字节,VC基本整型占4个字节,表2.1 C语言中各种整型数据的长度及取值范围,4.整型数据在内存中的存储形式,在计算机中,每一种数据类型的数据位数都是固定不变的,所以每一种数据类型都有它的取值范围,在进行算术运算的过程中,如果运算结果超出了它的取值范围,就会得到一个错误的运算结果,这种情况称为溢出。 标准C语言的基本整型的数据都是十六位的,其中的最高位(即最左边的一位)用来存放整数的符号,若是正整数,最高位为0,若是负整数,最高位为1。因此,从最高位就立刻能判别出存储器中存放的一个整数是正整数还是负整数。 例如整数5,其在内存中的二进制码为: 0000000000000101。 正整数的这种存储形式,称为“原码形式”的机器数。,所谓原码是指一个数的最高位为符号位,其余的数位均为数值位,数值位的值即为该数所对应的二进制数的值。如十进制数+5的原码为:0000000000000101; 十进制数-5的原码为:1000000000000101。 计算机中的数都是用补码表示的机器数。一个正数的补码和其原码的形式完全相同;而一个负数的补码也是在其原码的基础上转换出来的。转换方法分两步进行: (1) 将负数的原码中的数值位按位取反,得到该数的反码。取反操作就是把1转换成0,把0转换成1。如-5的反码为:1111111111111010。 (2) 在所求得的反码的数值部分的最低位再加上1,即得到该数的补码。 如-5的补码为:1111111111111011。,计算机中的数都是用补码表示的,如果要把内存中以补码形式存放的二进制数转换成十进制的整数,也要先将其补码转换成原码,转换方法同上,然后再将原码转换成十进制的整数。 如-5的补码为:1111111111111011,将其数值位按位取反,得到的结果为1000000000000100,再将其数值位加上1,即得到-5的原码为:1000000000000101。 由以上分析可知,由两个字节存放的最小整数是1000000000000000,它的十进制数为-32768;而-1的二进制码为1111111111111111;最大整数是0111111111111111,它的十进制数为32767。读者可按以上步骤进行换算。 对于无符号的整数,其中的最高位不再用来表示符号,16个二进制位全部用来存放数值,当其16个二进制位中全部都是0时,其对应的十进制数值为0;当其16个二进制位中全部都是1时,其对应的十进制数值为65535。,补码转换成原码,5.整型常量的类型,在程序中出现一个整型常量,也应该是上述6种类别当中的一种,C语言会自动按以下5种情况分别进行处理。 (1) 数值在-3276832767的范围内的常量是int型。 (2)超过上述范围,但在-21474836482147483647的范围内,则认为它是long int型。再超则当实型处理。 (3)标准C语言的int与short int等同。 (4)整型常量没有无符号的类型。但整型常数可以直接赋值给无符号类型的整型变量,只要常数的数值不超过无符号整型变量的取值范围即可。 (5)C语言允许在一个整型常数后面加上字符L(或l)表示一个长整型的数据,如100L为十进制长整型常量,0X100L为十六进制长整型常量。,2.4 实型数据,1. 实型常量 十进制小数形式,如:100.0、0.5、-10.8等,注意实型常量中必须要有一个小数点 指数形式,如:100e5表示100105,注意字母E(或e)之前必须有数字,且E(或e)后面的指数必须为整数,如E5、1.5e3.8、1e等都是不合法的指数形式 规范化的指数形式 字母E(或e)之前的小数部分,其小数点之前必须有且只能有一位非零的数值。 如:3.58759E2,2. 实型变量及其定义,C语言中的实型变量分为单精度型和双精度型两种,分别用保留关键字float和double进行定义。 例如:float x,y;/*说明变量x,y为单精度实型*/ double z; /*说明变量z为双精度实型*/,3. 实型数据分类,在大多数C编译系统中,将实型常量都作为双精度型来处理。例如: float a; double b; a=111111.111; /*最后两位小数不起作用*/ b=111111.111;,4. 实型数据在内存中的存储形式,实型数据在内存中是按照指数的形式来存储的。如图2.2所示。,由于实型数据在内存中的存储位数是固定的,也是有限的,所以实型数据的精度不是很高,所能表示的数据范围也是有限的。而且由于实型数据的存储形式比较复杂,计算机在进行算术运算时的处理速度也比较慢。,5.实型数据的误差,由于用来存储实型数据的存储单元的位数有限,所以有效位数以外的其它数字位被舍去了。这种误差叫做存储误差。此外,在将十进制数转换成二进制数时,有时也会产生误差,即转换误差。,main() float x1, x2; x1=288.4; /*有效位数不多,但会产生转换误差*/ x2=1234567891.0; /*有效位数太多,会产生存储误差*/ printf(“x1=%fn“, x1); printf(“x2=%fn“, x2); 程序的运行结果为: x1=288.399994 x2=1234567936.000000,例2.2 实型数据的误差,2.5 字符型数据,类型名 char 字符型数据存储ASCII字符集中的一个字符,占用1个字节的存储单元,实际存储的是该字符的ASCII值。 字符型数据的存储形式与整数的存储形式类似,所以在C语言中可以把字符型的数据当作整型数使用,其数值范围为:-128 127 可以定义无符号的字符变量,其数值范围为:0255,定义形式如下: unsigned char c; /*说明变量c为无符号字符型变量*/,1. 字符常量,字符常量是用单引号(即撇号)括起来的单个字符,如:A、6 转义字符 就是一个反斜杠字符,后跟另一个普通字符或若干个数字字符,把它们作为一个整体,用来代替某一个特殊的字符,例如n代表一个“换行”符 反斜杠字符的含义已经被转换为“转义字符”的标志字符,如果要在程序中用到反斜杠字符本身,则不能直接用,而应该用。 ddd 或 xhh是一个转义字符的通用形式,可以用它表示ASCII码字符集里的每一个字符。其中的三位八进制常量或两位十六进制常量为某个字符在ASCII码字符集里的编号,即ASCII码值,2. 字符串常量,C语言中的字符串常量是用一对双引号括起来的字符序列。字符串常量中的字符序列可以由任意多个字符组成,如:“a“、“ab“、“、“250“、 “good morning“ 字符串“称为空串,由两个连续的双引号组成 C语言规定在每一个字符串的结尾都加上一个字符0,作为字符串的结束标志 应注意空串与空格组成的字符串、字符常量与单个字符组成的字符串之间的差别,3. 字符变量,字符变量用来存放字符常量,其取值范围为ASCII码字符集中的256个字符。每个字符变量在内存中只占用1个字节的存储空间,只能用来存放一个字符常量。 字符变量的定义形式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代签房屋卖合同样本
- 关于绿化劳务合同样本
- 保洁器具销售合同样本
- 个体商店打工合同样本
- 中储库装卸合同标准文本
- fidic标准合同样本
- 代采购服务合同样本
- 东西湖合同标准文本
- 2025国际建筑工程合同范本英文版
- 邮轮代理合同范本
- 2025年度货车司机招聘广告发布合同3篇
- 基于几类机器学习模型预测肥胖成因的分析比较
- 2025年度科室质控方案计划
- 违规吊装施工的报告范文
- 2023年郑州黄河文化旅游发展有限公司招聘考试真题
- 重大火灾隐患判定方法
- 中国发作性睡病诊断与治疗指南(2022版)
- (完整版)设备吊装施工方案
- 重庆市高2025届高三第二次质量检测 数学试卷(含答案)
- 无人机创客实验室方案
- 2024年四川省乐山市中考地理·生物合卷试卷真题(含答案)
评论
0/150
提交评论