谭浩强版《C++程序设计》-第2章n.pptx
《谭浩强版《C++程序设计》-第2章n.pptx》由会员分享,可在线阅读,更多相关《谭浩强版《C++程序设计》-第2章n.pptx(63页珍藏版)》请在咨信网上搜索。
1、第第2章章 数据类型与表达式数据类型与表达式(数据对象定义与处理)(数据对象定义与处理)2.1 C+的数据类型的数据类型2.2 常量常量2.3 变量变量2.4 C+的运算符的运算符2.5 算术运算符与算术表达式算术运算符与算术表达式2.6 赋值运算符与赋值表达式赋值运算符与赋值表达式2.7 逗号运算符与逗号表达式逗号运算符与逗号表达式(1)处理什么?)处理什么?处理对象的结构与处理对象的结构与定义(数据,字符,定义(数据,字符,字符串)。字符串)。(2)如何处理?)如何处理?算术运算、关系算术运算、关系(比较)运算、逻(比较)运算、逻辑运算等的实现。辑运算等的实现。q计算机处理的对象是数据计算
2、机处理的对象是数据,而数据是有类型的而数据是有类型的(例如整数、浮点数、字符等形式)。(例如整数、浮点数、字符等形式)。数据结构指数据结构指的是数据的组织形式的是数据的组织形式。例如,数组就是一种数据结。例如,数组就是一种数据结构。不同的数据类型,其处理的算法一般不同,其构。不同的数据类型,其处理的算法一般不同,其所占的计算机内存单元大小也不同。所占的计算机内存单元大小也不同。C+可以使用可以使用的的数据类型数据类型如下:如下:2.1 C+的数据类型的数据类型数据类型数据类型基本类型基本类型整型整型短整型短整型(short int)整型整型(int)长整型长整型(long int)字符型字符型
3、(char)浮点型浮点型 单精度型单精度型(float)双精度型双精度型(double)长双精度型长双精度型(long double)布尔型布尔型(bool)逻辑型逻辑型构造类型构造类型枚举类型枚举类型(enum)数组类型数组类型结构体类型结构体类型(struct)共用体类型共用体类型(union)类类型类类型(class)指针类型指针类型引用类型引用类型空类型空类型(void)无值型无值型qC+的数据包括常量与变量,常量与变量都具有的数据包括常量与变量,常量与变量都具有类型。类型。q由以上这些数据类型还可以构成更复杂的数据结由以上这些数据类型还可以构成更复杂的数据结构。例如利用指针和结构体类
4、型可以构成表、树、构。例如利用指针和结构体类型可以构成表、树、栈等复杂的数据结构。栈等复杂的数据结构。qC+并没有统一规定并没有统一规定各类数据的精度、数值范围各类数据的精度、数值范围和在内存中所占的字节数和在内存中所占的字节数,各,各C+编译系统根据自编译系统根据自己的情况作出安排。己的情况作出安排。书书中表中表2.1列出了列出了Visual C+数值型和字符型数据数值型和字符型数据的情况的情况。说明说明:(1)整型数据分为长整型整型数据分为长整型(long int)、一般整型一般整型(int)和短整型和短整型(short int)。在在int前面加前面加long和和short分别表示长整型
5、和短整型。分别表示长整型和短整型。(2)整型数据的存储方式为按二进制数形式存储,整型数据的存储方式为按二进制数形式存储,例如十进制整数例如十进制整数85的二进制形式为的二进制形式为1010101,则在,则在内存中的存储形式如图内存中的存储形式如图2.1所示。所示。图图2.1(3)在整型符号在整型符号int和字符型符号和字符型符号char的前面的前面,可以可以加修饰符加修饰符signed(表示表示“有符号有符号”)或或unsigned(表示表示“无符号无符号”)。如果指定为。如果指定为signed,则数值以则数值以补码形补码形式式存放,存储单元中的最高位存放,存储单元中的最高位(bit)用来表示
6、数值用来表示数值的符号的符号。如果指定为。如果指定为unsigned,则数值没有符号,则数值没有符号,全部二进制位都用来表示数值本身全部二进制位都用来表示数值本身。例如短整型数。例如短整型数据占两个字节据占两个字节,见图,见图2.2。图图2.2有符号时,能存储的最大值为有符号时,能存储的最大值为215-1,即,即32767,最,最小值为小值为-32768。无符号时,能存储的最大值为。无符号时,能存储的最大值为216-1,即,即65535,最小值为,最小值为0。有些数据是没有负值的,。有些数据是没有负值的,可以使用可以使用unsigned,它存储正数的范围比用它存储正数的范围比用signed时要
7、大一倍。时要大一倍。(4)浮点型浮点型(又称实型又称实型)数据分为数据分为单精度单精度(float)、双双精度精度(double)和长双精度和长双精度(long double)3种,在种,在Visual C+6.0中,对中,对float提供提供6位有效数字,对位有效数字,对double提供提供15位有效数字,并且位有效数字,并且float和和double的数的数值范围不同。对值范围不同。对float分配分配4个字节,对个字节,对double和和long double分配分配8个字节。个字节。常量的值是不能改变的常量的值是不能改变的。常量包括两大类,即。常量包括两大类,即数值数值型常量型常量(即
8、常数即常数)和和字符型常量字符型常量。如。如12,0,-3为整为整型常量,型常量,4.6,-1.23为实型常量,包含在两个为实型常量,包含在两个单撇单撇号号之间的字符为字符常量,如之间的字符为字符常量,如a,x。这种这种从字面形式即可识别的常量称为从字面形式即可识别的常量称为“字面常量字面常量”或或“直接常量直接常量”。2.2 常量常量 2.2.1 什么是常量什么是常量数值常量就是通常所说的数值常量就是通常所说的常数常数。在。在C+中,数值常中,数值常量是区分类型的,从字面形式即可识别其类型。量是区分类型的,从字面形式即可识别其类型。1.整型常量整型常量(整数)的类型整数)的类型整型数据可分为
9、整型数据可分为int,short int,long int以及以及unsigned int,unsigned short,unsigned long等类别。整型常量等类别。整型常量也分为以上类别。也分为以上类别。2.2.2 数值常量数值常量一个整型常量可以用一个整型常量可以用3 3种不同的方式表示种不同的方式表示:(1)十进制整数十进制整数。如。如1357,-432,0等。在一个整型等。在一个整型常量后面加一个字母常量后面加一个字母l或或L,则认为是则认为是long int型常量。型常量。例如例如123L,421L,0L等,这往往用于函数调用中。等,这往往用于函数调用中。如果函数的形参为如果函
10、数的形参为long int,则要求实参也为则要求实参也为long int型,此时用型,此时用123作实参不行,而要用作实参不行,而要用123L作实参。作实参。(2)八进制整数八进制整数。在常数的开头加一个。在常数的开头加一个数字数字0,就表,就表示这是以八进制数形式表示的常数。如示这是以八进制数形式表示的常数。如020表示这表示这是八进制数是八进制数20,即(,即(20)8,它相当于十进制数,它相当于十进制数16。(3)十六进制整数十六进制整数。在常数的开头加一个。在常数的开头加一个数字数字0和一和一个英文字母个英文字母X(或或x),就表示这是以十六进制数形式就表示这是以十六进制数形式表示的常
11、数。如表示的常数。如0X20表示这是十六进制数表示这是十六进制数20,即,即(20)16,它相当于十进制数,它相当于十进制数32。2.浮点数的表示方法浮点数的表示方法一个浮点数可以用一个浮点数可以用两种不同的方式表示两种不同的方式表示:(1)十进制小数形式十进制小数形式。如。如21.456,-7.98等。它一般由等。它一般由整数部分和小数部分组成,可以省略其中之一整数部分和小数部分组成,可以省略其中之一(如如78.或或.06,.0),但不能二者皆省略。,但不能二者皆省略。C+编译系统编译系统把用这种形式表示的浮点数一律把用这种形式表示的浮点数一律按双精度常量处理按双精度常量处理,在内存中占在内
12、存中占8个字节。如果在实数的数字之后加字个字节。如果在实数的数字之后加字母母F或或f,表示此数为单精度浮点数表示此数为单精度浮点数,如,如1234F,-43f,占占4个字节。如果加字母个字节。如果加字母L或或l,表示此数为长双表示此数为长双精度数精度数(long double),在在Visual C+6.0中占中占8个字个字节。节。(2)指数形式指数形式(即浮点形式即浮点形式)一个浮点数可以写成指数形式,如一个浮点数可以写成指数形式,如3.14159可以表示可以表示为为0.314159101,3.14159100,31.415910-1,314.15910-2等形式。在程序中应表示为:等形式。
13、在程序中应表示为:0.314159e1,3.14159e0,31.4159e-1,314.159e-2,用用字字母母e表示其后的数是以表示其后的数是以10为底的幂为底的幂,如,如e12表示表示1012。其一般形式为其一般形式为数符数符 数字部分数字部分 指数部分指数部分a=0.314159e1;a=3.14159e0;a=31.4159e-1;a=314.159e-2;以上以上4个赋值语句中,用了不同形式的浮点数,但个赋值语句中,用了不同形式的浮点数,但其作用是相同的。其作用是相同的。在程序中不论把浮点数写成小数形式还是指数形式,在程序中不论把浮点数写成小数形式还是指数形式,在内存中都是在内存
14、中都是以指数形式以指数形式(即浮点形式即浮点形式)存储的存储的。例。例如不论在程序中写成如不论在程序中写成314.159或或314.159e0,31.4159e1,3.14159e2,0.314159e3等形式,等形式,在内存在内存中都是以规范化的指数形式存放中都是以规范化的指数形式存放,如图,如图2.3所示。所示。图图2.3数字部分必须小于数字部分必须小于1,同时,小数点后面第一个数,同时,小数点后面第一个数字必须是一个非字必须是一个非0数字,数字,例如不能是例如不能是0.0314159。因。因此此314.159和和314.159e0,31.4159e1,3.14159e2,0.314159
15、e3在内存中表示成在内存中表示成0.314159103。存储单存储单元分为两部分,一部分用来存放数字部分,一部分元分为两部分,一部分用来存放数字部分,一部分用来存放指数部分。用来存放指数部分。1.普通的字符常量普通的字符常量用用单撇号括起来的一个字符就是字符型常量单撇号括起来的一个字符就是字符型常量。如。如a,#,%,D都是合法的字符常量,都是合法的字符常量,在内存中占一个字节。在内存中占一个字节。2.2.3 字符常量字符常量2.转义字符常量转义字符常量除了以上形式的字符常量外,除了以上形式的字符常量外,C+还允许用一种特还允许用一种特殊形式的字符常量,就是殊形式的字符常量,就是以以 “”开头
16、的字符序开头的字符序列列。例如,。例如,n代表一个代表一个“换行换行”符。符。“coutn;”将输出一个换行,其作用与将输出一个换行,其作用与“coutendl;”相同。这种相同。这种“控制字符控制字符”,在屏,在屏幕上是不能显示的。在程序中也无法用一个一般形幕上是不能显示的。在程序中也无法用一个一般形式的字符表示,只能采用特殊形式来表示。式的字符表示,只能采用特殊形式来表示。常用的以常用的以“”开头的特殊字符见书中表开头的特殊字符见书中表2.2。3.字符数据在内存中的存储形式及其使用方法字符数据在内存中的存储形式及其使用方法将一个字符常量存放到内存单元时,是将将一个字符常量存放到内存单元时,
17、是将该字符相该字符相应的应的ASCII代码代码放到存储单元中。如果字符变量放到存储单元中。如果字符变量c1的值为的值为a,c2的值为的值为b,则在变量中存放的则在变量中存放的是是a的的ASCII码码97,b 的的ASCII码码98,如图,如图2.4(a)所示,实际上在内存中是以二进制形式存放所示,实际上在内存中是以二进制形式存放的,如图的,如图2.4(b)所示。所示。图图2.4在在C+中字符型数据和整型数据之间可以通用中字符型数据和整型数据之间可以通用。一。一个字符数据可以赋给一个整型变量,反之,一个整个字符数据可以赋给一个整型变量,反之,一个整型数据也可以赋给一个字符变量。也可以对字符数型数
18、据也可以赋给一个字符变量。也可以对字符数据进行算术运算,此时相当于对它们的据进行算术运算,此时相当于对它们的ASCII码进码进行算术运算。行算术运算。例例2.1 将字符赋给整型变量。将字符赋给整型变量。#include using namespace std;int main()int i,j;/i和和j是整型变量是整型变量i=A;/将一个字符常量赋给整型变量将一个字符常量赋给整型变量ij=B;/将一个字符常量赋给整型变量将一个字符常量赋给整型变量jcouti jn;/输出整型变量输出整型变量i和和j的值,的值,return 0;执行时输出执行时输出 65 66i和和j被指定为整型变量。但在第
19、被指定为整型变量。但在第5和第和第6行中,将字行中,将字符符A和和B分别赋给分别赋给i和和j,它的作用相当于以它的作用相当于以下两个赋值语句:下两个赋值语句:i65;j66;因为因为A和和B的的ASCII码为码为65和和66。注意注意:仅在一定条件下仅在一定条件下,字符型数据和整型数据是,字符型数据和整型数据是可以通用的。因为可以通用的。因为字符数据只占一个字节,它只能字符数据只占一个字节,它只能存放存放02550255范围内的整数范围内的整数。例例2.2 字符数据与整数进行算术运算。下面程序的字符数据与整数进行算术运算。下面程序的作用是将小写字母转换为大写字母。作用是将小写字母转换为大写字母
20、。#include using namespace std;int main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;coutc1 c2endl;return 0;运行结果为运行结果为A Ba的的ASCII码为码为97,而,而A的的ASCII码为码为65,b为为98,B为为66。从从ASCII代码表中可以看到每一个小写字母比它相代码表中可以看到每一个小写字母比它相应的大写字母的应的大写字母的ASCII代码大代码大32。ASCII代码表见附录代码表见附录A4.字符串常量字符串常量用用双撇号括起来的部分就是字符串常量。双撇号括起来的部分就是字符串常量。如如a
21、bc,Hello!,a+b,Liping。abc在内存中占在内存中占4个字节个字节(而不是而不是3个字节个字节),见,见图图2.5。图图2.5编译系统会在字符串最后自动加一个编译系统会在字符串最后自动加一个00作为作为字符串结束标志字符串结束标志。但。但0并不是字符串的一部分,并不是字符串的一部分,它只作为它只作为字符串的结束标志字符串的结束标志。注意:注意:aa和和aa代表不同的含义代表不同的含义。前者占两个字节,后者占前者占两个字节,后者占1个字节。个字节。字符串常量要用字符数组来存放,见第字符串常量要用字符数组来存放,见第5章。章。请思考请思考:字符串常量字符串常量abcn包含几个字符包
22、含几个字符?不不是是5个而是个而是4个字符,其中个字符,其中“n”是一个转义字符。是一个转义字符。但它在内存中占但它在内存中占5个字节个字节(包括一个包括一个“0”字符字符)。编译系统遇到编译系统遇到“”时就会把它认作转义字符的标时就会把它认作转义字符的标志,把它和其后的字符一起作为一个转义字符。志,把它和其后的字符一起作为一个转义字符。为了编程和阅读的方便,在为了编程和阅读的方便,在C+程序设计中,程序设计中,常用常用一个符号名代表一个常量,称为符号常量一个符号名代表一个常量,称为符号常量,即以标,即以标识符形式出现的常量。识符形式出现的常量。例例2.3 符号常量的使用。符号常量的使用。#d
23、efine PRICE 30 /注意这不是语句,末尾不要加分号注意这不是语句,末尾不要加分号int main()int num,total;num=10;total=num*PRICE;couttotal=totalendl;return 0;2.2.4 符号常量符号常量注意!符号常量虽然有名字,但它不是变量注意!符号常量虽然有名字,但它不是变量。它的值在其作用域它的值在其作用域(在本例中为主函数在本例中为主函数)内是不能改内是不能改变的,也不能被赋值。如用赋值语句变的,也不能被赋值。如用赋值语句“PRICE=40;”给给PRICE赋值是错误的。赋值是错误的。使用符号使用符号常量的好处是:常量
24、的好处是:(1)含义清楚。含义清楚。(2)在需要改变一个常量时能做到在需要改变一个常量时能做到“一改全改一改全改”。在程序在程序运行期间其值可以改变的量称为变量运行期间其值可以改变的量称为变量。一个。一个变量应该有一个名字,并在内存中变量应该有一个名字,并在内存中占据一定的存储占据一定的存储单元单元,在该存储单元中存放变量的值。请注意区分,在该存储单元中存放变量的值。请注意区分变量名和变量值变量名和变量值这两个不同的概念,见图这两个不同的概念,见图2.6。图图2.6 2.3 变量变量 2.3.1 什么是变量什么是变量用来标识变量、符号常量、函数、数组、类型等实用来标识变量、符号常量、函数、数组
25、、类型等实体名字的有效字符序列称为体名字的有效字符序列称为标识符标识符(identifier)。)。变量名是标识符的一种,变量的名字必须遵循标识变量名是标识符的一种,变量的名字必须遵循标识符的符的命名规则命名规则。C+规定标识符只能由规定标识符只能由字母、数字和下划线字母、数字和下划线3种字种字符组成,且第一个字符必须为字母或下划线符组成,且第一个字符必须为字母或下划线。下面。下面列出的是合法的标识符,也是合法的变量名:列出的是合法的标识符,也是合法的变量名:sum,average,total,day,month,Student_name,tan,BASIC,li_ling下面是不合法的标识符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+程序设计 谭浩强版 C+ 程序设计
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。