资源预览内容
第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
第9页 / 共37页
第10页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第2章 常量、变量和运算,2.1 常量和变量,2.2 运算,2.3 基本输入输出,2.4 常见问题解答,2.1 常量和变量,根据C+程序中数据的可变性,可将数据分为常量和变量两大类。但为了能精确表征数据在计算机内存中的存储(格式和大小)和操作,C+将数据类型分为基本类型、派生类型以及复合类型三类,后两种类型又可统称为构造类型。如图2.1所示。,2.1.1 基本数据类型,表2.1还列出C+各种基本数据的类型、字宽(以字节数为单位)和范围,它们是根据ANSI/ISO标准而定的。,2.1.1 基本数据类型,1. 整型 为了更好地控制整数的范围和存储空间,C+还用short(短型)、long(长型)、signed(有符号)和unsigned(无符号)来区分: (1)当short修饰int时,称为短整型,写成short int或short,使用2个字节来存储。当long修饰int时,称为长整型,写成long int或long,使用4个字节来存储。 (2)默认时short、int和long都是有符号(signed)的,所以signed可以省略。但当用unsigned修饰它们时,则强制使其符号位(最高位)作为数据位,这样一来,所表示的整数的最小值是0,即只能表示正整数。,2.1.1 基本数据类型,2. 实型 实型又可称为浮点型,它的类型有:float、double和long double。float是单精度实型,用4字节来表示,有效位数为7位。double是双精度实型,用8字节来表示,有效位数为15位。 3. 字符型 在ANSI/ISO C+中,char字符类型用于表示ASCII编码的字符,它的类型有:char、unsigned char和signed char。 4. 布尔型 ANSI/ISO C+添加一种新的无修饰的数据类型bool,称为布尔型,它只占1个字节的存储空间,用来表示false和true两个常量值。不过,若将false和true转换成int时,false则表示0,true则表示1。,2.1.2 字面常量,1. 整数常量 当整数用八进制表示时,则应在数值前加0。如045,即(45)8,表示八进制数45,等于37;而当用十六进制来表示时,则应在数值(由09、AF或af组成)前加0x或0X,如0x7B,即(7B)16,等于十进制的123,-0X1a等于十进制的-26。 2. 实数常量 实数即浮点数,它有十进制数和指数两种表示形式。当为十进制数形式时,必须要有小数点。如0.12、.12、1.2、12.0、12.、0.0等。当用指数形式来表示时,需在指数前加E(或e),且字母E(或e)前必须有数字,例如1.2e9或1.2E9都表示1.2x109。 3. 字符常量 在C+中,用单引号将其括起来的字符称为字符常量。如B、b、%、 等都是合法的字符,但若只有一对单引号则是不合法的,因为C+不支持空字符常量。注意B和b是两个不同的字符。,2.1.2 字面常量,C+还可以用“”开头的字符序列来表示特殊形式的字符,称为转义字符。表2.2列出了常用的转义序列符。,2.1.2 字面常量,4. 字符串常量* 字符串常量是一对双引号括起来的字符序列,简称为字符串。字符串常量中除一般字符外,还可以包含空格、转义序列符或其它字符(如汉字)等。例如: “Hello, World!n“ “C+语言“ 等等都是合法的字符串常量。字符串常量的字符个数称为字符串长度。若只有一对双引号“”,则这样的字符串常量的长度为0,称为空字符串。 字符串常量应尽量在同一行书写,若一行写不下,可用“”来连接,例如: “ABCD EFGHIGK.“,2.1.3 变量及其命名规则,1. 变量名命名 (1)合法性。C+规定标识符须由大小写字母、数字字符(09)和下划线组成,且第一个字符必须为字母或下划线。任何标识符中都不能有空格、标点符号及其它字符,且不能和系统的关键字同名。所谓关键字,它由系统内部定义的,是具有特殊含义和用途的标识符,程序中不能另作他用。以下是63个ANSI/ISO C+标准关键字:,2.1.3 变量及其命名规则,(2)有效性。因为有的编译系统只能识别前32个字符。因此,虽然标识符的长度(组成标识符的字符个数)是任意的,但最好不能超过32个。 (3)易读性。在定义标识符时,若能做到“见名知意”就可达到易读性的目的。,2.1.3 变量及其命名规则,2. 变量定义 在使用一个变量前必须先要通知编译系统为其开辟内存空间,即定义这个变量。C+中,变量定义格式如下: , , ;,2.1.3 变量及其命名规则,(1)除了上述整型变量、实型变量外,还可有字符型变量,即用char定义的变量。这些都是基本数据类型变量。实际上,只要是合法的C+数据类型,均可以用来定义变量。例如: unsigned short x, y, z; / 无符号短整型变量 long double pi; / 长双精度实型变量 (2)在同一个作用域(以后会讨论)中,不能对同一个变量重新定义。或者说,在同一个作用域中,不能有2个或以上的相同的变量名。例如: float x, y, z; / 单精度实型变量 int x; / 错误,变量x重复定义 float y; / 错误,变量y重复定义 (3)C+变量满足即用即定义的编程习惯,也就是说变量定义的位置可以不必固定,比较自由,但一定要遵循“先定义后使用”的原则。例如: int x; x = 8; int y; / 即用即定义 coutzendl; / 错误,z还没有定义,2.1.3 变量及其命名规则,3. 变量赋值和初始化 (1)在变量定义后,使用赋值语句来赋初值。如下列的代码,使得x和y初值都设为8: int x, y; x = 8; / 给x赋值 y = x; / 将x的值赋给y (2)在变量定义的同时赋给变量初值,这一过程称为变量初始化。例如: int nNum1 = 3; / 指定nNum1为整型变量,初值为3 double x = 1.28; / 指定x为双精度实变量,初值为1.28 char c = G; / 指定c为字符变量,初值为G (3)也可以在多个变量的定义语句中单独对某个变量进行初始化,如: int nNum1, nNum2 = 3, nNum3; 表示nNum1、nNum2、nNum3为整型变量,但只有nNum2的初值为3。 (4)在C+中,变量的初始化还有另外一种形式,例如: int nX(1), nY(3), nZ;,2.1.4 标识符常量,1. const只读变量 在变量定义时,当用关键字const来修饰时,则这样的变量是只读的,即在程序中对其只能读取不能修改。由于不可修改,因而在定义时必须初始化。需要说明的是,通常将标识符常量中的标识符写成大写字母以与其他标识符相区别。例如: const float PI = 3.14159265f; / 指定f使其类型相同,否则会有警告错误 PI()被定义成一个float类型的只读变量,由于float变量只能存储7位有效位精度的实数,因此PI的实际值为3.141592。若将PI定义成double,则全部接受上述数字。事实上,const还可放在类型名之后,如下列语句: double const PI = 3.14159265;,2.1.4 标识符常量,这样,就可在程序中使用PI这个标识符常量来代替(3.14159265)值。例如: 【例Ex_PI】用const定义标识符常量 #include using namespace std; const double PI = 3.14159265; / PI是一个只读变量 int main() double r = 100.0, area; area = PI * r * r; / 引用PI cout“圆的面积是:“area “n“; return 0; / 指定返回值 程序运行的结果如下: 圆的面积是:31415.9,2.1.4 标识符常量,2. #define标识符常量 在C+中,为了保持与C语言的兼容,允许程序用编译预处理指令#define来定义一个标识符常量。例如: #define PI 3.14159265 这条指令的格式是#define后面跟一个标识符再跟一串字符,中间用空格隔开。由于它不是C+语句,因此行尾没有分号。,2.1.4 标识符常量,3. 枚举常量 定义时,先写关键字enum,然后是要定义的枚举类型名、一对花括号(),最后以分号结尾。enum和类型名之间至少要有一个空格,花括号里面是指定的各个枚举常量名,各枚举常量名之间要用逗号分隔。即如下列格式: enum ; 例如: enum COLORS Black, Red, Green, Blue, White ;,2.2 运算,2.2.1 算术运算 C+算术运算符有:双目的加减乘除四则运算符、求余运算符以及单目的正负运算符。如下所示: + 正号运算符,如+4,+1.22等 - 负号运算符,如-4,-1.22等 * 乘法运算符,如6*8,1.4*3.56等 / 除法运算符,如6/8,1.4/3.56等 % 模运算符或求余运算符,如40%11等 + 加法运算符,如6+8,1.4+3.56等 - 减法运算符,如6-8,1.4-3.56等,2.2.2 赋值运算,1. 左值和右值 (1)必须对应于一块内存空间。 (2)所对应的内存空间的内容必须可以改变,也就是说左值的值必须可以改变。 例如,若有: const double PI = 0; PI = 3.14159265; / 错误:PI不是一个左值,2.2.2 赋值运算,2. 复合赋值 在C+中,规定了下列10种复合赋值运算符: += 加赋值 &= 位与赋值 -= 减赋值 |= 位或赋值 *= 乘赋值 = 位异或赋值 /= 除赋值 = 右移位赋值,2.2.2 赋值运算,它们都是在赋值符“=”之前加上其它运算符而构成的,其中的算术复合赋值运算符的含义如表2.3所示,其他复合赋值运算符的含义均与其相似。,2.2.2 赋值运算,3. 多重赋值 所谓多重赋值是指在一个赋值表达式中出现两个或更多的赋值符“=”,例如: nNum1 = nNum2 = nNum3 = 100 / 若结尾有分号“;”,则表示是一条语句 由于赋值是一个表达式,因而几乎可以出现在程序的任何地方,由于赋值运算符的等级比较低,因此这时的赋值表达式两边应要加上圆括号。例如: a = 7 + (b = 8) / 赋值表达式值为15,a值为15,b值为8 a = (c = 7) + ( b = 8) / 赋值表达式值为15,a值为15,c值为7,b值为8 ( a = 6 ) = (c = 7) + ( b = 8) / 赋值表达式值为15,a值为15,c值为7,b值为8,2.2.3 数据类型转换,1. 自动转换 自动转换是将数据类型从低到高的顺序自动进行转换,如图2.2所示,箭头的方向表示转换的方向。,2.2.3 数据类型转换,2. 强制转换 强制转换是在程序中通过指定数据类型来改变图2.2所示的类型转换顺序,将一个变量从其定义的类型改变成为另一种不同的类型。由于这种转换可能会丢失有效的数据位,因而是不安全的。在强制转换操作时,C+有下列两种基本格式: () () 这里的类型名是任何合法的C+数据类型,例如float、int等。通过类型的强制转换可以将表达式(含常量、变量等)转换成类型名指定的类型,例如: double f = 3.56; int nNum; nNum = (int)f; / 强制使double转换成int,小数部分被截去 或者 nNum = int(f); /
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号