142.3常量与变量3.字符常量字符型常量是用一对单引号(即撇号)括起来的单个字符,在内存中占一个字节。例如:'a','b','1','$','A'、'#'//正确的字符常量'AB'、"AB"、"a"//错误的字符常量•一个字符常量的值是该字符对应的ASCII码值。例如,字符常量'a'~'z'对应的ASCII编码值是97~123;字符常量'0'~'9'对应的ASCII编码值是48~57。显然'0'与数字0是不同的。•C++语言中还允许一种特殊形式的字符常量,即以反斜线“\”开头的字符序列,称为转义字符。
152.3常量与变量常用的转义字符见表
162.3常量与变量4.符号常量使用符号常量可以使数据含义清楚,同时也便于该数据的修改。符号常量的定义形式:#define符号常量标识符常量值例如:#defineNULL0//定义符号常量NULL代表0#definePI3.14159//定义符号常量PI代表3.141595.布尔型常量布尔型常量只有2个,即true和false,分别代表“真”和“假”。
172.3常量与变量6.字符串常量字符串常量是用双引号括起来的字符序列。比如:"CHINA","","teacherandstudent","12345.456","a"等都是字符串常量。字符串常量一般用一个字符数组(参见第4章)来存储,每个字符占一个字节,存放其对应的ASCII码。字符串常量在内存中存储时,系统自动加上串尾标志'\0'。每个字符串常量在内存中占用的存储单元数目应为该字符串长度(字符个数)加1。例如,"CHINA"的存储形式如图2-8所示。图2-8字符串"CHINA"存储形式
182.3常量与变量2.3.2变量变量是指在程序运行过程中,其值可以改变的量。使用变量前必须先定义(声明),变量是用来保存常量的。变量有三个要素:名称、类型和值。1.变量的名字变量名字是一个标识符,所以必须符合标识符的命名规则。例如:a,_abc,、AREA、x1、x2//合法的变量名4ac、#g、a+1、fn!a、a$//不合法的变量名
192.3常量与变量2.变量的定义变量在使用之前必须先定义,要声明自己的数据类型、存储类型。变量的定义格式为:数据类型变量名1,变量名2,…,变量n;例如:intiSum,iLength,x,y;//定义4个整型变量iSum,iLength,x,ycharch;//定义1个字符型变量chfloatfSum,fWidth;//定义2个实型(单精度)变量fSum,fWidthdoubleu,v;//定义2个实型(双精度)变量u,v
202.3常量与变量3.变量赋初值当使用变量时,变量必须有值。C++语言允许在定义变量的同时使变量初始化。如:inta=2;//定义a为整型变量,初值为2charb=A;//定义b为字符型变量,初值为‘A’floatx=2.1234F;//定义x为实型变量,初值为2.1234F也可对定义的部分变量进行初始化。如intu,v=100,w;//定义u,v,w为整型变量,v的初值为100
212.3常量与变量4.const型变量变量的值可以随时变化,即按需要给变量重新赋值。但有时为了保护变量的值,不允许对变量作修改,则需要将变量说明成常量,具体方法是在变量定义语句前面(或类型与变量之间)加说明符const。例如:constfloatPI=3.14;intconstMaxCout=100;常变量定义时必须初始化。在使用const型变量时,除了不可以给它赋值外,其他均与使用一般变量一样。
222.4运算符与表达式2.4.1算术运算符和算术表达式C++语言的算术运算符包括基本算术运算符、强制类型转换运算符和自增、自减运算符。1.基本算术运算符基本算术运算符及其功能如表2-6所示。表2-6基本算术运算符
232.4运算符与表达式2.自增、自减运算符自增、自减运算符是单目运算符,即对一个运算对象施加运算,运算结果仍赋予该对象。如表2-7所示。表2-7自增、自减运算符
242.4运算符与表达式3.算术表达式用算术运算符和括号将运算对象(也称操作数)连接起来的式子,称为算术表达式。运算对象可以是常量、变量、函数等。4.运算优先级和结合性在表达式求值时,先按运算符的优先级别高低次序执行,再按运算符的结合方向结合(相同优先级时),例如,先乘除后加减。算术运算符的优先级和结合性如表2-8所示。表2-8算术运算符的优先级和结合性
252.4运算符与表达式2.4.2关系运算符与关系表达式1.关系运算符“关系运算符”实际上就是“比较运算符”。关系运算的结果为逻辑值(true或false)。如表2-910所示,C++语言中提供6种关系运算符:<,<=,>,>=,==,!=。(1)优先级别顺序是:自上而下,优先级由高到低。(2)同级运算符的结合性是“左结合性”,即“自左向右”顺序进行。关系运算的优先级都低于算术类,高于赋值类。例如:a>b+c等效于a>(b+c)a=b+c等效于a=(b+c)(3)关系运算符<=,>=,==,!=在书写时,不要空格将其分开,否则会产生语法错误。
262.4运算符与表达式2.4.2关系运算符与关系表达式1.关系运算符表2-9关系运算符
272.4运算符与表达式2.关系表达式关系表达式是用关系运算符连接两个表达式构成。一般形式为:表达式1关系运算符表达式2该表达式执行时,先计算“表达式1”和“表达式2”的值,然后进行比较,运算结果为true(真)或为false(假),分别用非0(true)或0(false)表示。
282.4运算符与表达式2.4.3逻辑运算符与逻辑表达式1.逻辑运算符逻辑运算可以表示运算对象的逻辑关系。表2-10给出了C++语言中3种逻辑运算符、功能及运算规则。表2-10辑运算符
292.4运算符与表达式2.4.3逻辑运算符与逻辑表达式辑运算符中,“!”优先级最高,而且高于算术运算和关系运算符;其次是“&&”,“||”最低。“&&”和“||”都低于算术运算和关系运算符。表2-11逻辑运算“真值表”
302.4运算符与表达式2.逻辑表达式用逻辑运算符连接起来的式子称为逻辑表达式。一般形式为:!表达式1或:表达式1&&表达式2或:表达式1||表达式2例如:!x,x&&y,x||y
312.4运算符与表达式2.逻辑表达式(1)逻辑量的真假判定──0和非0逻辑运算的结果是逻辑值真或假。对于逻辑表达式而言,参加运算的量可以是任何类型的量,在进行判断时系统视非零值为“真”,零值为“假”;而关系运算或逻辑运算的结果若为“真”其值为1,若为“假”其值为0,结果值是无符号整数,又可参与其后的运算。(2)逻辑运算符两侧的操作数,除可以是0和非0的整数外,也可以是其它任何类型的数据,如实型、字符型等。
322.4运算符与表达式2.4.4位运算符和位运算所谓位(bit)运算,是指对一个数据的某些二进制位进行的运算。每个二进制位只能存放1位二进制数“0”或者“1”。通常把组成一个数据的最右边的二进制位称做第0位,从右到左以此称为第1位,第2位……最左边一位称做最高位。C++语言提供6种位运算符,如表2-12所示。表2-12位运算符及含义
332.4运算符与表达式1.按位与(&)运算符“&”将两个运算量的对应二进制位进行“逻辑与”运算。当且仅当参加运算的两个对象的对应二进制位都为1时,结果的对应二进制位为1,否则为0。2.按位或(|)运算符“|”将两个运算对象按对应二进制位进行“逻辑或”运算。即,当参加运算的两个对象的对应二进制位有一个为“1”时,结果的对应二进制位为“1”。3.按位异或(^)运算符“^”将两个运算对象按对应二进制位进行“逻辑异或”运算,即当参加运算的两个对象的相应二进制位一个为“0”,另一个为“1”时,结果的对应二进制位为1,否则为0。
342.4运算符与表达式4.按位取反(~)运算符“~”为一元运算符,它将运算对象的各位取反,即将1变0,0变1。5.左移运算符(<<)左移运算的一般格式为:运算对象<<左移位数左移运算符将运算对象的每个二进制位同时向左移动指定的位数,从左边移出的高位部分被丢弃,空出的低位部分补0。
352.4运算符与表达式6.右移运算符(>>)右移运算的一般格式为:运算对象>>右移位数右移运算符将运算对象的每个二进制位同时向右移动指定的位数,从右边移出的低位部分被丢弃。对无符号数,左边空出的高位补0;对有符号数,正数的高位部分补0,负数高位部分补0还是1跟计算机系统有关。移入0的称为“逻辑右移”,移入1的称为“算术右移”。
362.4运算符与表达式2.4.5条件运算符条件运算符“?:”是C++语言中唯一的一个具有3个操作数的运算符,其与表达式格连接的式子叫条件表达式。一般格式如下:变量=<表达式1>?<表达式2>:<表达式3>功能:首先计算表达式1的值,如果表达式1的值为非0(真),则整个条件表达式的值取表达式2的值;否则,整个条件表达式的值取表达式3的值。
372.4运算符与表达式2.4.6赋值运算符和赋值表达式1.赋值运算符在C/C++语言中,等号“=”被作为是一种运算符,称为赋值运算符。一般形式:<变量名>=<表达式>;功能:将右边表达式的值赋给左边的变量。例如:a=13;//将右边数据13值赋给左边的变量ax=a+15;//将右边表达式(a+15)的值28赋给左边的变量x
382.4运算符与表达式2.4.6赋值运算符和赋值表达式2.复合赋值运算符在赋值运算符的前面加上一个其它运算符后就构成复合的赋值运算符。一般形式:<变量><双目运算符>=<表达式>;等价于:<变量>=<变量><双目运算符><表达式>;
392.4运算符与表达式3.赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。一般形式:<变量><赋值运算符><表达式>例如,a=12是一个赋值表达式。对赋值表达式求解的过程是:将赋值运算符右侧的“表达式”的值赋给左侧的变量,而赋值表达式的值就是被赋值的变量的值。如a=12这个赋值表达式的值就是变量a的值12。
402.4运算符与表达式2.4.7逗号运算符和逗号表达式逗号运算符“,”作为C++语言的一种特殊的运算符,也称为顺序求值运算符,它的作用是把多个表达式连接起来。例如:3+2,4+6x+3,y+z,s-1等都是在做逗号运算。我们把用逗号运算符连接起来的式子称为逗号表达式,其一般形式为:表达式1,表达式2,...,表达式n
412.4运算符与表达式1.求解过程按照从左到右的顺序逐个求解表达式1,表达式2,...,表达式n,而整个逗号表达式的值是最后一个表达式(表达式n)的值。例如:a=3*5,a*4//是逗号表达式,运算结束后a=14,表达式的值是60x=(a=3,6*3)//是赋值表达式,运算结束后a=3,x=18,表达式的值是18x=a=3,6*3//是逗号表达式,运算结束后a=3,x=18,表达式的值是182.优先级逗号运算符在所有运算符中的优先级别最低,且具有从左至右的结合性。例如:a=3*4,a*5,a+10求解过程为:先计算3*4,将值12赋给a,然后计算a*5的值为60,最后计算a+10的值为22,所以整个逗号表达式的值为22,而a的值为12。
422.4运算符与表达式2.4.8运算符的优先级与结合顺序表2-14运算符的优先级当表达式中包含多个运算符时,哪个运算符先参加运算是由运算符的优先级来决定的,高优先级的先参加运算,低优先级的后参加运算。运算符的优先级详见表2-14。
432.5类型转换2.强制类型转换强制类型转换的一般格式为:(强制转换的类型名)(表达式)功能:把表达式强制转换为指定的类型。例如:(int)(a)或(int)a//将a转换成整型*/(double)(x+y)//将x+y转换成double型
442.6情景应用——训练项目2.6.1项目1:求解方程ax2+bx+c=0(a不为0)【问题描述】求解一元二次方程ax2+bx+c=0,由键盘输入系数,输出方程的根。图2-12求一元二次方程ax2+bx+c=0的根
45