资源预览内容
第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
第9页 / 共24页
第10页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第3讲常量、变量与标志符 整型、实型、字符型数据12.2 常量、变量与标识符 在源程序中明确指明,在程序运行前就知道,而在源程序中明确指明,在程序运行前就知道,而 且在程序运行过程中不会发生变化。且在程序运行过程中不会发生变化。 常量类型:常量类型: 整型常量,如:整型常量,如:123123、-321-321、0 0 实型常量,如:实型常量,如:12.312.3、2.02.0 字符常量,如:字符常量,如:aa、bb、77、# 符号常量,用一个符号常量,用一个标识符标识符来代表,其值在其来代表,其值在其 作用域内不能改变,也不能被赋值,一般在程作用域内不能改变,也不能被赋值,一般在程 序中需要多次使用某个常量时使用。序中需要多次使用某个常量时使用。1. 1. 常量常量2例2.1 符号常量的使用 符号常量必须先定义,符号常量必须先定义, 后使用。后使用。 定义格式为:定义格式为: #define #define 常量名常量名 常量数据常量数据 习惯上用大写字母来标习惯上用大写字母来标 识符号常量,用小写字识符号常量,用小写字 母来标识变量或函数。母来标识变量或函数。 例例2.12.1:符号常量的使用:符号常量的使用 #define PI 3.14159#define PI 3.14159 main( )main( ) float r, l, area;float r, l, area;r=3.5; r=3.5;l=2*PI*r; l=2*PI*r;area=PI*r*r; area=PI*r*r;printf(“lprintf(“l=%f, =%f, area=%fn”, area=%fn”, l, l, area);area); 32. 变量 在程序运行过程中其值可以在一定范围内变化在程序运行过程中其值可以在一定范围内变化 在计算机的内存中占据一定的存储单元,在相应在计算机的内存中占据一定的存储单元,在相应 的存储单元中存放着变量的值。的存储单元中存放着变量的值。 变量名变量名:用来标识一个变量的标识符,也就是变:用来标识一个变量的标识符,也就是变 量的名字。习惯上变量名用小写字母表示,以增量的名字。习惯上变量名用小写字母表示,以增 加其直观性和可读性。加其直观性和可读性。 变量值变量值:变量的值,即在变量的存储单元中存放:变量的值,即在变量的存储单元中存放 的数值。的数值。 CC语言规定在程序中所有要用到的变量在使用前语言规定在程序中所有要用到的变量在使用前 必须先指定其类型,称为变量定义或变量说明。必须先指定其类型,称为变量定义或变量说明。 43. 标识符 CC语言中,标识符可以用作变量名、符号名、函语言中,标识符可以用作变量名、符号名、函 数名和后面将要学到的数组名、文件名以及一些数名和后面将要学到的数组名、文件名以及一些 具有专门含义的名字。具有专门含义的名字。 合法的合法的标识符标识符只能由字母、数字和下划线等三种只能由字母、数字和下划线等三种 字符组成,并且第一个字符必须为字母或下划线字符组成,并且第一个字符必须为字母或下划线 。 在在CC语言的标识符中,大写字母和小写字母是两语言的标识符中,大写字母和小写字母是两 个不同的字符,个不同的字符, 对于标识符的长度,一般的计算机系统规定取前对于标识符的长度,一般的计算机系统规定取前 8 8个字符有效,如果长于个字符有效,如果长于8 8个字符,多余的字符个字符,多余的字符 将不被识别。有些系统允许取较长的名字,读者将不被识别。有些系统允许取较长的名字,读者 在取名时应当了解所用系统的具体规定。在取名时应当了解所用系统的具体规定。 5标识符的分类 C语言的标识符可以分为以下三类。 关键字 C语言规定的一批标识符,它们在程序中都 代表着固定的含义,不能另作它用。(如 :breakcasechar等不能作为变量名) 预定义标识符 在C语言中也都有特定的含义,允许 另作它用,但这将使这些标识符失去系统规定的原意 。 用户标识符 用户根据需要定义,一般用来给变量、 函数、数组或文件等命名。除要遵循标识符的命名规 则外,还应注意做到“见名知义”,即选择的用户标 识符应具有相关含义,以增加程序的可读性。 如果用户标识符与关键字相同,程序在编译时将给出 出错信息,如果与预定义标识符相同,系统并不报错 ,只是该预定义标识符将失去原定含义,代之以用户 确认的含义,可能会引发一些运行时的错误。 62.3 整型数据整型数据包括整型常量和整型变量。 1.1.整型常量整型常量(1) (1) 十进制形式,如:十进制形式,如:100100,0 0,-100 -100 (2) (2) 八进制形式,以数字八进制形式,以数字0 0开头的八进制数开头的八进制数 ,如:,如: 0157 0157 ,即(157)8,其对应的十进制数值为: 182+581+780,即111。八进制数中的数位符 号只能有8 个,即07。 (3) (3) 十六进制形式,以数字字母十六进制形式,以数字字母0x0x开头的十六进制数开头的十六进制数 ,如:,如:0x1570x157表示十六进制数表示十六进制数157 157 ,即(157)16,其 对应的十进制数值为:1162+5161+7160,即 343。十六进制数中的数位符号为数字字符09和英 文字母AF等16个字符。 C C语言自动按常量的范围决定其类型。同时允许用户在整语言自动按常量的范围决定其类型。同时允许用户在整 型常量后面加上字符型常量后面加上字符L L(或(或l l)表示长整型数据表示长整型数据 72.整型变量整型变量可以分为基本整型、短整型、长整型和无符号 整型四种。本节只介绍基本整型的变量。C语言规定在程序中所有要用到的变量,在使用前必须先 指定其类型,即对变量进行“定义”或者说明。基本整型的变量用类型名关键字int 进行定义,定义形 式如下:int k; /*定义变量k为整型变量*/int x1, x2, x3; /*定义变量x1, x2和x3均为整型变量*/一般微机都会为每个已定义的基本整型的变量在内存 中开辟2个连续的存储单元,一个存储单元可以存放8位的 二进制信息,一个基本整型的变量中具有16位的二进制信 息,其中的最高数值位为符号位,它所能表示的数值范围 为:-3276832767。83. 整型数据分类类类型类类型名符号 类类型类类型名符号基本整型int最高位无符号 整型unsigned int无短整型short int或 short最高位无符号 短整型unsigned short无长长整型long int或 long最高位无符号 长长整型unsigned long无无符号型数据和其相应的有符号型数据占用相同的存储空间 不同的C语言处理系统对这几类整型数所占用的字节数和数值范围 有不同规定,只要求长整型(long)数据所占字节数不少于基本整 型(int),短整型(short)不多于基本整型 标准C基本整型占2个字节,VC基本整型占4个字节9表2.1 C语言中各种整型数据的长度及取值范围104.整型数据在内存中的存储形式 在计算机中,每一种数据类型的数据位数都是固定不变 的,所以每一种数据类型都有它的取值范围,在进行算术 运算的过程中,如果运算结果超出了它的取值范围,就会 得到一个错误的运算结果,这种情况称为溢出。标准C语言的基本整型的数据都是十六位的,其中的最 高位(即最左边的一位)用来存放整数的符号,若是正整数 ,最高位为0,若是负整数,最高位为1。因此,从最高位 就立刻能判别出存储器中存放的一个整数是正整数还是负 整数。例如整数5,其在内存中的二进制码为: 0000000000000101。正整数的这种存储形式,称为“原码形式”的机器数。11所谓原码是指一个数的最高位为符号位,其余的数位均 为数值位,数值位的值即为该数所对应的二进制数的值。 如十进制数+5的原码为:0000000000000101;十进制数-5的原码为:1000000000000101。计算机中的数都是用补码表示的机器数。一个正数的补 码和其原码的形式完全相同;而一个负数的补码也是在其 原码的基础上转换出来的。转换方法分两步进行:(1) 将负数的原码中的数值位按位取反,得到该数的反 码。取反操作就是把1转换成0,把0转换成1。如-5的反码 为:1111111111111010。(2) 在所求得的反码的数值部分的最低位再加上1,即 得到该数的补码。如-5的补码为:1111111111111011。 计算机中的数都是用补码表示的12如果要把内存中以补码形式存放的二进制数转换成十进制 的整数,也要先将其补码转换成原码,转换方法同上,然后 再将原码转换成十进制的整数。如-5的补码为:1111111111111011,将其数值位按位取反 ,得到的结果为1000000000000100,再将其数值位加上1, 即得到-5的原码为:1000000000000101。由以上分析可知,由两个字节存放的最小整数是 1000000000000000,它的十进制数为-32768;而-1的二进制 码为1111111111111111;最大整数是0111111111111111,它 的十进制数为32767。读者可按以上步骤进行换算。对于无符号的整数,其中的最高位不再用来表示符号,16 个二进制位全部用来存放数值,当其16个二进制位中全部都 是0时,其对应的十进制数值为0;当其16个二进制位中全部 都是1时,其对应的十进制数值为65535。补码转换成原码135.整型常量的类型 在程序中出现一个整型常量,也应该是上述6种类别当 中的一种,C语言会自动按以下5种情况分别进行处理。 (1) 数值在-3276832767的范围内的常量是int型。 (2)超过上述范围,但在-21474836482147483647的范 围内,则认为它是long int型。再超则当实型处理。 (3)标准C语言的int与short int等同。 (4)整型常量没有无符号的类型。但整型常数可以直接 赋值给无符号类型的整型变量,只要常数的数值不超过 无符号整型变量的取值范围即可。 (5)C语言允许在一个整型常数后面加上字符L(或l) 表示一个长整型的数据,如100L为十进制长整型常量, 0X100L为十六进制长整型常量。142.4 实型数据1. 实型常量十进制小数形式,如:100.0、0.5、-10.8等,注意 实型常量中必须要有一个小数点 指数形式,如:100e5表示100105,注意字母E (或e)之前必须有数字,且E(或e)后面的指数必 须为整数,如E5、1.5e3.8、1e等都是不合法的指 数形式 规范化的指数形式 字母E(或e)之前的小数部分, 其小数点之前必须有且只能有一位非零的数值。如:3.58759E2 152. 实型变量及其定义C语言中的实型变量分为单精度型和 双精度型两种,分别用保留关键字float 和double进行定义。例如:float x,y;/*说明变量x,y为单精度实型*/double z; /*说明变量z为双精度实型*/163. 实型数据分类类类型类类型名存储储 空间间数值值范围围有效数 字位数单单精度float4(10-381038 ) 7双精度 double8(10-30810308 )1516在大多数C编译系统中,将实型常量都作为双精度型 来处理。例如:float a; double b;a=111111.111; /*最后两位小数不起作用*/b=111111.111;174. 实型数
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号