C++程序设计谭浩强第2章修订.docx
- 文档编号:17260616
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:23
- 大小:42.19KB
C++程序设计谭浩强第2章修订.docx
《C++程序设计谭浩强第2章修订.docx》由会员分享,可在线阅读,更多相关《C++程序设计谭浩强第2章修订.docx(23页珍藏版)》请在冰点文库上搜索。
C++程序设计谭浩强第2章修订
第二章数据类型与表达式
2.1C++数据类型(P19~20)
C++允许使用的数据类型见P18中的图表。
基本类型:
1.整数类型
整数类型的标识符是int。
计算机中整型数据的取值范围是数学中整数集中的一个有限子集。
对于不同的计算机系统,这个有限子集是不同的,他与计算机分配给整数所占的存储空间有关。
整型数据根据其所占用的内存字节数不同,还可以加限定词:
short(短)、long(长)、unsigned(无符号)
例2.1有符号整数与无符号整数的差异
#include
usingnamespacestd;
intmain()
{
shortinti;
unsignedshortintj;
j=40000;
i=j;
cout<<"Sortintis:
“<
cout<<"Unsingnedsortintis:
“< return0; } 运行结果: 说明: 由于I是short类型,其取值范围是: -32768~32768,而40000已经超出了该范围,因此发生了溢出;j是unsignedshortint,其取值范围是: 0~65535,所以40000没有超出该范围,因此可以正确表示。 例2.2不同类型整数的极值 #include #include usingnamespacestd; intmain() {cout<<"Minofsortis: “< cout<<"Maxofsortis: “< cout<<"Minofintis: “< cout<<"Maxofintis: “< cout<<"Minoflongis: “< cout<<"Maxoflongis: “< cout<<"Maxofunsignedsortis: “< cout<<"Maxofunsignedintis: “< cout<<"Maxofunsignedlongis: “< return0; } 运行结果: 说明: C++头文件climits.h中定义了一系列符号常量用来表示各种整数类型的极值,由于C++标准中没有规定每种整数类型所占的字节数,因此不同的系统环境,其各种整数类型的极值会有所不同。 2.实数类型 实数类型(又称做浮点数据类型)分为单精度(float)、双精度(double)类型和长双精度(longdouble)其区别在于所占存储位的多少,从而决定了其取值的范围。 3.字符类型 字符类型的标识符为chat。 一个字符型数据只能是一个单个字符,且必须用一对单引号括起来。 通常在内存中占用一个字节,用来存储该字符对应的ASCII码值(无符号整数)。 注: 仔细阅读P19中的表及关于各种类型的说明 2.2常量 常量是指在程序的执行过程中其值不能被改变的量。 常量具有类型属性,类型决定了各种常量在内存中占据存储空间的大小。 一、数值常量(常数) 1.整型常量(三种形式)(P20) 十进制常量: 一般占一个机器字长,是一个带正负号的常数(默认情况下为正数), 如: +3,-7等。 八进制常量: 由数字0开头,其后由若干0~7的数字组成, 如: 0376代表(376)80123代表(123)8等。 十六进制常量: 以0x开头,其后由若干0~9的数字及A~F(或小写a~f)的字母组成, 如: 0x173代表(173)160x代表(3af)16 在C++中,一个整型数据没有任何说明,表示int型,也可在整型常量后跟字母l或L表示long型(长整数),也可以跟u或U表示unsigned整数(无符号整数)。 如以下数是合法的: 375u//无符号整数 12345UL//无符号长整数 54321L//长整数 13579ul//无符号长整数 注: 整数在内存中的存储形式: “位”(bit): 计算机内存储器的最小存储单位,用于存放二进制数0或1; “字节”(byte): 由8个二进制位组成; “字”(word): 由若干个字节组成(随机器而不同,如16位机,即16位二进制作为一个字),用于存放一条机器指令或一个数据。 在C中一个int整数通常用2个字节存放: 其中最高位(最左边的一位)用来存放整数的符号(0表示正整数)。 2.实型(浮点型)常量(两种形式)(P21) 十进制形式: 由数字和小数点组成。 小数点的左右至少一边要有数字。 如: 21.5.254.04.等都是合法的。 科学科学记数法(指数计数法): 由尾数、e或E和指数部分组成,E的两边都至少要有一位数且E的右边只允许是整数形式。 如: 3.0E+5,4E-5,.4E-5,4.E-2等都是合法的; 而下列数据在C中是不合法的实型数据: 4.0E(E的右边没有数字) .E+4(小数点的两边都没有数字) 0.35E2.4(E的右边即指数部分不是整数) E-2(E的左边没有数字) 注: 实型数据存在有精确度问题: float型提供6位有效数字;(VisualC++6.0) double型提供15位有效数字;(VisualC++6.0) 在C++中,一个实型数据没有任何说明,表示double型。 要表示float型数,则必须在实数后加上f或F。 例如: 26.7f//float型 26.7//double型(默认表示) 二、字符型常量(P22) 1.普通字符常量 字符常量是由一对单引号括起来的一个单一字符。 如: ‘A’,‘S’,‘*’等,在内存中占一个字节。 如: cout<<’a’; 2.转义字符常量 除以上形式的字符常量外,C++中还允许使用一种特殊形式的字符常量。 即以“\“开头的字符序列。 如: ‘\n’代表一个换行符,见P22表2.2,主要用于表示一些无法通过键盘输入的字符常量。 转义字符的含义是: 将反斜杠“\“后面的字符转变成另外的意义。 例2.3转义字符的应用 #include usingnamespacestd; intmain() {cout<<’A’<<’‘<<’a’< cout<<”one\ttwo\tthree\n”;//使用水平制表符 cout<<”123\b456\b78\n”;//使用退格符 cout<<”Alert\a\n”;//使用响铃键 return0; } 3.字符数据在内存中的存储形式及其使用方法 一个字符型数据通常在内存中占用一个字节,用来存储该字符对应的ASCII码值(无符号整数)。 例如: 字符‘A’的ASCII码值为65,在计算机内部的存储形式如下图所示: 0 1 0 0 0 0 0 1 再例如: 字符‘5’的ASCII码值为53,在计算机内部的存储形式如下图所示 0 0 1 1 0 1 0 1 C++中的字符型数据与整型数据之间可以通用,其中间转换在于: ASCII字值。 例2.4将字符赋给整型变量 #include usingnamespacestd; intmain() {inti,j; i='A'; j='B'; cout< return0; } 运行结果: 6566 例2.5字符型数据与整数进行算术运算 #include usingnamespacestd; intmain() {charc1,c2; c1='a'; c2='b'; c1=c1-32; c2=c2-32; cout< return0; } 运行结果: AB 注: 实现大小写字母的转换 4.字符串常量(P24) 字符串常量是由一对双引号括起来的字符序列。 例如: “Howdoyoudo? ” “Iamastudent.” “hello” 字符常量和字符串常量是不同的。 在C++中,字符串常量总是以‘\0’结束。 例: 一个字符串“HELLO”,则他在内存中的表示为连续6个内存单元。 H E L L O ‘\0’ 说明: 一个字符占一个内存单元,含有一个字符的字符串占有2个内存单元,其中,第二个内存单元存放\0结束符。 (因此,“0”与‘0’是不同的) 分析如下字符串的输出: cout<<”abc\\\n”< cout<<”Isay: \”Thankyou! \”\n”;\\Isay: ”Thankyou! ” 三、符号常量(P25) C++允许用定义一个符号名的方法来代表一个常量 案例2.6计算圆面积 #include usingnamespacestd; #definePI3.14159 intmain() { doubler,s,l; r=5.0; s=PI*r*r; l=2*PI*r; cout<<”s=”< retuen0; } 定义“符号名常量”的意义: 便于对程序的阅读、维护与修改。 注意: 在#define命令行后面不加分号。 2.3变量(P26) 一、变量的概念 变量是指程序在运行过程中,其值可以被改变的量。 每个变量由一个变量名惟一标识,同时,每个变量又具有一个特定的数据类型。 不同类型的变量在内存中占有存储单元的个数不同。 变量的值可以通过赋值的方式获得和改变。 分析P26图2.6理解变量名与变量值的概念。 二、变量名命名 变量名的命名要遵守以下规则: ●不能是C++保留字。 ●第一个字符必须是字母或下划线,中间不能有空格。 ●变量名除了使用26个英文大小写字母和数字外,只能使用下划线。 ●一般不要超过32个字符。 ●变量名不要与C++的库函数名、类名和对象名相同。 ●符合标识符的命名规则,并且避免使用关键字; ●见名知义、提高可读性; 例如, 合法的变量名: a123c3bfile_1 不合法的变量名: J.Agate¥50a 注: C++对大小写是敏感的,即DATE与date被认为是两个不同的变量名。 注: 标识符是指由字母(a~z,A~Z)、数字(0~9)和下划线(_)组成,并且第一个字符必须为字母或下划线开头的一系列字符。 其作用是用来表示: 变量名、符号名、函数名、文件名、数组名等。 三、变量定义和说明(P27) C++规定,任何变量在使用之前一定要定义或说明其数据类型,以便为其分配相应数量的存储单元,用来存放相应的值。 变量定义的一般格式为: 变量类型变量名表列; 例如: intx,y,sum; floata,b,aver; charname,ch; 注: 多个同一类型的变量可以在一行中定义,中间用逗号隔开,也可以分别定义。 例如: inta,b,c;//定义3个整型变量a,b,c 和 inta;//定义整型变量a intb;//定义整型变量b intc;//定义整型变量c 二者等价。 注: 关于变量说明语句的位置C与C++有所区别。 四、变量初始化(P28) C++允许在变量定义的同时为其赋初值(初始化) 例如: inta=3; floatb=3.4; 分析如下程序段的结果: inta=3,b; cout< 五、常变量(*C++新增)(只读变量)(P29) 1.const的一般形式 const数据类型名常变量名=表达式; 例如: constfloatPI=3.14; 比较如下两段程序,分析define的不安全性 inta=1; #definet1a+a//预定义 #definet2t1-t1 cout<<"t2is"< 输出: t2is2 用const替代define inta=1; constt1=a+a;//常变量定义语句 constt2=t1-t1; cout<<"t2is"< 输出: t2is0 说明: 常变量与符号常量的区别 2.4C++运算符及表达式(P30) 运算是对数据进行加工的过程,用来表示各种不同运算的符号称为运算符。 参加运算的数据称为运算量、运算对象或操作数。 用运算符把运算量连接起来的式子称为运算表达式,简称表达式。 注: C++语言的运算符按其在表达式中与运算对象的关系(连接运算对象的个数)可分为: ⏹单目运算(一元运算符,只需一个操作数) ⏹双目运算(二元运算符,需两个操作数) ⏹三目运算(三元运算符,需三个操作数) 一、算术运算符和算术表达式(P30) 1.基本算术运算符 基本算术运算符除了负值运算符外都是双目运算符,即是指两个运算量之间的运算。 取负值运算符是单目运算符。 ⏹+(加法运算符,或正值运算符,如1+2,+3) ⏹-(减法运算符,或负值运算符,如1-2,-3) ⏹*(乘法运算符,如1*2) ⏹/(除法运算符,如1/2) ⏹%(模运算符或称求余运算符,如7%3=1) 说明: ①关于除法运算: 两个整数相除的结果仍为整数。 例如: 7/4的结果值为1,舍去小数部分。 如果参加运算的两个数中有一个为实数,则结果是double型。 ②关于求余运算: 关于求余运算也叫模运算,求余运算符两侧的运算量必须都是整型,其结果值是两数相除所得的余数。 一般情况下,所得余数与被除数符号相同。 例如: 7%4=3,10%5=0,-8%5=-3,8%-5=-3 ③关于实型数运算: 在C++中,所有实型数的运算均以双精度方式进行(若是单精度数,则在尾数部分补0,使之转化为双精度数) 2.自增、自减运算符(P32) 自增、自减运算符是单目运算符,即仅对一个运算量施加运算,运算结果仍赋予该运算量。 参加运算的运算量必须是变量。 运算符 名称 例子 等价于 ++ 加1 x++或++x x=x+1 -- 减1 x--或--x x=x-1 说明: 从表中可以看出,自增、自减运算符可以用在运算量之前(如: ++a或—a,称为前置运算),也可放在其后(如a++或a--,称为后置运算)。 对一个变量实行前置运算或后置运算,其运算结果是一样的,即都使变量的值加1或减1。 但当前置运算或后置运算出现在一个表达式中时,这两种运算的用法是不同的,其区别表现为: 前置运算是变量的值首先加1或减1,然后再以该变量变化后的值参加其他运算。 例如: 比较以下两段程序 x=4;x=4; y=6;y=6; z=y-(++x);z=y-(x++); (a)(b) 案例2.7观察自增、自减运算符 #include usingnamespacestd; intmain() {inta=0,b=0; a++; b--; cout<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 谭浩强第 修订