收藏 分销(赏)

C++面向对象程序设计(第二版)全套电子教案整本书教学教程.ppt

上传人:w****g 文档编号:12068171 上传时间:2025-09-05 格式:PPT 页数:416 大小:4.20MB 下载积分:25 金币
下载 相关 举报
C++面向对象程序设计(第二版)全套电子教案整本书教学教程.ppt_第1页
第1页 / 共416页
C++面向对象程序设计(第二版)全套电子教案整本书教学教程.ppt_第2页
第2页 / 共416页


点击查看更多>>
资源描述
Click to edit title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,C+面向对象程序设计,*,Click to edit title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,C+面向对象程序设计,*,Click to edit title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,C+面向对象程序设计,*,Click to edit title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,C+面向对象程序设计,*,Click to edit title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,C+面向对象程序设计,*,Click to edit title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,C+面向对象程序设计,*,Click to edit title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,C+面向对象程序设计,*,Click to edit title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,C+面向对象程序设计,*,Click to edit title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,C+面向对象程序设计,*,Click to edit title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,C+面向对象程序设计,*,Click to edit title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,C+面向对象程序设计,*,C+,面向对象程序设计,(,第二版,),05 九月 2025,C+面向对象程序设计,C+,面向对象程序设计,第一章 面向对象程序设计概述,第二章,C+,语言基础,第三章,C+,程序的结构,第四章 类与对象,第五章 类的继承与派生,第六章 多态性与虚函数,第七章 模板,第八章 数据流与文件的输入,/,输出,05 九月 2025,C+面向对象程序设计,2.1,数据类型和基本输入输出,第九章 异常处理,第十章 项目设计,校园信息管理系 统,C+,面向对象程序设计,(,第二版,),C+,面向对象程序设计,(,第二版,),第一章,面向对象程序设计概述,第一章,面向对象程序设计概述,1.1,面向对象的基本概念,1.2 C+,面向对象程序设计,1.3 C+,程序的基本组成,1.4 Visual C+6.0,开发环境,05 九月 2025,C+面向对象程序设计,1.1,面向对象的基本概念,面向对象程序设计的本质是把数据及对数据的操作方法放在一起,作为一个相互依存、不可分离的整体,对象。,对同类型对象抽象出其共性,形成类。,05 九月 2025,C+面向对象程序设计,1.1,面向对象的基本概念,面向对象程序设计方法具有,4,个基本特征:抽象、封装、继承和多态性。,抽象(,abstract,)就是忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,把具有共同性质的事物划分为一类,得出一个抽象的概念。面向对象方法中的“类”将具有相同属性和行为的一组对象提供了抽象的描述,一个属于某类的对象称为该类的一个实例。,05 九月 2025,C+面向对象程序设计,1.1,面向对象的基本概念,封装(,encapsulation,)就是把每个对象的数据(属性)和操作(行为)包装在一个类中,并尽可能隐藏对象的内部细节。一般限制直接访问对象的属性,而应通过操作接口访问,这样使程序中模块之间关系更简单、数据更安全。对程序的修改也仅限于类的内部,使得由于修改程序所带来的影响局部化。,05 九月 2025,C+面向对象程序设计,1.1,面向对象的基本概念,多态性(,polymorphism,)是指允许不同类的对象对同一消息作出的响应不相同。一般类中定义的属性或行为,被特殊类继承后,可以具有不同的数据类型或者是表现出不同的行为。这使得同一个属性或行为在一般类及其各个特殊类中具有不同的语义,05 九月 2025,C+面向对象程序设计,1.1,面向对象的基本概念,通过使用面向对象程序设计的抽象、封装、继承和多态性等机制,程序更易于维护、更新和升级。利用代码可重用性,程序员可以在程序中大量使用成熟的类库,从而缩短程序的开发时间,提高程序员的工作效率和程序的可靠性。,05 九月 2025,C+面向对象程序设计,1.2 C+,面向对象程序设计,本书介绍的主要就是使用最为广泛的,C+,语言和使用,C+,语言进行面向对象程序设计的方法。在学习编程之前,我们首先来简单了解以下,C+,程序的开发过程。,05 九月 2025,C+面向对象程序设计,1.2 C+,面向对象程序设计,程序的开发通常要经过编辑、编译、连接、运行调试这几个步骤。编辑是将源程序输入到计算机中,生成后缀为,.cpp,的磁盘文件。编译(,compile,)是将程序的源代码转换成机器语言代码。程序员编制的源程序被编译后,会生成一个目标文件,这个文件通常以,.obj,作为文件扩展名,该目标文件为源程序的目标代码。,05 九月 2025,C+面向对象程序设计,1.2 C+,面向对象程序设计,但是编译后的程序还不能由计算机执行,因为目标代码只是一个个的程序块,需要相互衔接成为一个适应一定操作系统环境的程序整体。为了把它转换成可执行程序,必须进行连接(,link,)。,C+,程序通常是通过同时连接一个或多个目标文件以及一个或几个库而创建的。,05 九月 2025,C+面向对象程序设计,1.2 C+,面向对象程序设计,库(,.lib,)是一组由机器指令构成的程序代码,是可连接文件。库有标准库和用户生成的库。标准库是由,C+,提供的,用户生成的库是由软件开发商或程序员提供的。文件与库连接的结果,即生成一个后缀为,.exe,的计算机可执行程序。,05 九月 2025,C+面向对象程序设计,1.3 C+,程序的基本组成,我们就从最简单的例子来分析,C+,程序的构成,:,05 九月 2025,C+面向对象程序设计,#include,using namespace std;,void main(),cout Hello,World!n;,cout Im a student.n;,1.3 C+,程序的基本组成,程序运行结果为:,05 九月 2025,C+面向对象程序设计,Hello,World!,Im a student.,1.3 C+,程序的基本组成,05 九月 2025,C+面向对象程序设计,一个,C+,程序是由三部分组成的,分别是:注释部分、编译预处理和程序主体。,程序的注释部分是程序员为读者作的说明,是提高程序可读性的一种方法。,每个以符号“,#”,开头的行,称为编译预处理行。如本例中“,#include”,称为编译指令。,1.3 C+,程序的基本组成,05 九月 2025,C+面向对象程序设计,在程序的主体部分中,,main,是主函数名,函数是,C+,程序中最小的功能单位,每一个,C+,程序都必须有一个,main(),函数,并且,main(),表明了程序执行的开始点。,1.3 C+,程序的基本组成,每一种编程语言都使用一组字符来构造成编程语句。用,C+,语言编写程序时,除了字符型数据以外,其它所有成分都只能由字符集中的字符构成。,C+,语言的字符集由下列字符构成:,05 九月 2025,C+面向对象程序设计,1.3 C+,程序的基本组成,05 九月 2025,C+面向对象程序设计,26,个大写英文字母:,ABCDEFGHIJKLMNOPQRSTUVWXYZ,26,个小写英文字母:,abcdefghijklmnopqrstuvwxyz,10,个数字字符:,0 1 2 3 4 5 6 7 8 9,特殊字符:,+-*/=,._ :;?!,#%&(),空格,1.3 C+,程序的基本组成,05 九月 2025,C+面向对象程序设计,词法记号是最小的词法单元,接下来介绍,C+,的关键字、标识符、文字、运算符、分隔符、空白符。,关键字,C+,中,关键字又称保留字,它是预先定义好的标识符,这些标识符对,C+,编译程序有着特殊的含义。,1.3 C+,程序的基本组成,05 九月 2025,C+面向对象程序设计,标识符标识符是程序员声明的单词,它命名程序正文中的一些实体,如函数名、变量名、类名、对象名等。,文字,文字是在程序中直接使用符号表示的数据,包括数字、字符、字符串和布尔文字,。,操作符(运算符),操作符是用于实现各种运算的符号,。,1.3 C+,程序的基本组成,05 九月 2025,C+面向对象程序设计,分隔符,分隔符用于分隔各个词法记号或程序正文,这些分隔符不表示任何实际的操作,仅用于构造程序,。,空白,在程序编译时的词法分析阶段将程序正文分解为词法记号和空白。空白是空格、制表符、换行符和注释的总称,。,1.4 Visual C+6.0,开发环境,Visual C+6.0,是微软公司推出的一个功能强大的可视化软件开发工具。,Visual C+6.0,不仅是一个,C+,编译器,它还有一个非常好的集成开发环境,Developer Studio,,包括编辑器编译器、调试器以及程序向导等组件,,用它可以在编写,C+,程序时对程序的结构进行可视化的管理。,05 九月 2025,C+面向对象程序设计,1.4 Visual C+6.0,开发环境,本节简单介绍,Visual C+6.0,集成开发环境的特点、界面风格和简单工具的使用。,安装完,Visual C+6.0,后,从,Windows,的“开始,|,程序”菜单中选择,Microsoft Visual Studio 6.0,菜单中的,Microsoft Visual C+6.0,菜单项,就启动了,Visual C+,集成开发环境,出现集成开发环境的主窗口,Developer Studio,。,05 九月 2025,C+面向对象程序设计,1.4 Visual C+6.0,开发环境,下面通过实例说明如何利用,Visual C+6.0,创建一个,C+,程序。,05 九月 2025,C+面向对象程序设计,启动,Visual C+6.0,,打开,File,菜单,执行,New,菜单命令,出现,New,对话框,如图,1-1,所示。在,Project,页面窗口中选择,Win32 Console Application,选项,创建一个,Win32,控制台应用程序。在,Project name,编辑框中输入项目名称,Hello,,在,Location,编辑框中输入保存项目的路径。,1.4 Visual C+6.0,开发环境,05 九月 2025,C+面向对象程序设计,图,1-1,创建一个,Win32,控制台应用程序,1.4 Visual C+6.0,开发环境,05 九月 2025,C+面向对象程序设计,在,Win32 Console Application-Step1 of 1,对话框中设置控制台应用程序的类型,如图,1-2,所示。这里我们要创建一个空项目程序,因此选择第一项,An empty project,,单击,Finish,按钮,出现,New Project Information,对话框,单击,OK,按钮,将生成一个空项目。,1.4 Visual C+6.0,开发环境,05 九月 2025,C+面向对象程序设计,图,1-2,设置控制台应用程序的类型,1.4 Visual C+6.0,开发环境,05 九月 2025,C+面向对象程序设计,向项目,Hello,中添加源程序文件。打开,Project,菜单,选择,Add to Project|New,,出现如图,1-3,所示的添加项目文件对话框。在的,Files,页面窗口中选择,C+Source File,,在右边的,File,编辑框中输入,C+,源程序文件名称,Hello,,在,Location,编辑框中输入保存该文件的路径。单击,OK,按钮,在主窗口,Developer Studio,左边的项目工作区窗口的,Souce Files,文件夹目录下出现,Hello.cpp,文件,双击该文件,在右边的编辑窗口中输入例,1-1,的源程序代码。,1.4 Visual C+6.0,开发环境,05 九月 2025,C+面向对象程序设计,图,1-3,添加项目文件,1.4 Visual C+6.0,开发环境,05 九月 2025,C+面向对象程序设计,编译运行源程序,Hello.cpp,。打开,Build,菜单,选择,Build Hello.exe,命令项或按快捷键,F7,,系统开始对项目,Hello,进行编译、连接,同时在输出窗口中显示出编译的内容,当出现,Hello.exe 0 error(s),0 warning(s),字样时,表示,Hello.exe,可执行文件已经正确无误地生成了,如图,1-4,所示。在,Build,菜单中选取,Execute Hello.exe,命令项或按快捷键,Ctrl+F5,,就可以运行刚刚生成的,Hello.exe,。,1.4 Visual C+6.0,开发环境,05 九月 2025,C+面向对象程序设计,图,1-4,Hello,项目,Developer Studio,窗口,1.4 Visual C+6.0,开发环境,05 九月 2025,C+面向对象程序设计,MSDN,帮助系统。除了有关,Visual C+6.0 IDE,具体操作说明的联机帮助文件,,Microsoft Visual Studio,还提供了,MSDN Library,(,Microsoft developer network library,)组件。,MSDN,帮助系统是一个,HTML,格式的帮助文件,它所包含的内容非常丰富,包含了有关,Visual Studio,的编程原理、方法和应用实例等内容。并且使用,MSDN,时可以通过访问微软网站“,”,获得有关,MSDN,的最新信息,。,1.4 Visual C+6.0,开发环境,05 九月 2025,C+面向对象程序设计,用户通过选择,Help,菜单下的,Contents,命令或,Search,工具栏按钮就可以进入,MSDN,帮助系统,也可单击,F1,键快速获取相关内容的帮助。图,1-5,是,MSDN Library,是一般界面,。,1.4 Visual C+6.0,开发环境,05 九月 2025,C+面向对象程序设计,图,1-5 MSDN,帮助系统,C+,面向对象程序设计,(,第二版,),C+,面向对象程序设计,(,第二版,),第二章,C+,语言基础,第二章,C+,语言基础,2.1,数据类型和基本输入输出,2.2,运算符和表达式,2.3,基本控制结构,2.4,函数,2.5,构造类型,2.6,指针,项目设计,1,控制台程序的人机界面设计,05 九月 2025,C+面向对象程序设计,2.1,数据类型和基本输入输出,2.1.1,基本数据类型,2.1.2,常量,2.1.3,变量,2.1.4,基本输入、输出,05 九月 2025,C+面向对象程序设计,2.1.1,基本数据类型,基本数据类型是,C+,系统的内部数据类型,包括,bool,(布尔型)、,int,(整型)、,char,(字符型)、,float,(单精度浮点型)、,double,(双精度浮点型)以及基本数据类型中,short,(短型)和,long,(长型)、,signed,(有符号)和,unsigned,(无符号)之分。,+,的数据类型如下图所示:,05 九月 2025,C+面向对象程序设计,2.1.1,基本数据类型,05 九月 2025,C+面向对象程序设计,2.1.1,基本数据类型,使用基本数据类型要注意两点:,无符号(,unsigned,)和有符号(,signed,)的区别在于数值最高位的含义。,int,型在,16,位系统中和在,32,位系统中,所占用字节数是不一样的。,05 九月 2025,C+面向对象程序设计,2.1.2,常量,所谓常量是指在程序运行的整个过程中其值始终不可改变的量,也就是直接使用符号(文字)表示的值。,例如,10,,,-6,,,2.3,,,-5.7,,,A,,,b,都是常量。,整型常量,整型常量就是整型常数。整型常量可以用以下三种形式表示,:,十进制整数:十进制整数没有前缀。例如:,237,、,-568,、,65535,、,1627,05 九月 2025,C+面向对象程序设计,2.1.2,常量,八进制整数:八进制整数要以数字,0,开头,即以,0,作为八进制数的前缀。例如:,015,(十进制为,13,)、,0101,(十进制为,65,)、,0177777,(十进制为,65535,),十六进制整常数:十六进制整数要以数字,0 x,或,0X,开头,即以,0 x,作为十六进制数的前缀。例如:,0X2A,(十进制为,42,)、,0XA0,(十进制为,160,)、,0XFFFF,(十进制为,65535,),实型常量,实型常量也称为实数或者浮点数。实数只采用十进制,它有二种形式:小数形式和指数形式。,05 九月 2025,C+面向对象程序设计,2.1.2,常量,十进制数的形式:由数码,09,和小数点组成。例如:,0.0,、,25.0,、,5.789,、,0.13,、,300.,、,-267.8230,等均为合法的实数。注意,实型常量中必须含有小数点。,指数形式:由十进制数,加阶码标志“,e”,或“,E”,以及阶码(只能为整数,可以带符号)组成。例如:,2.1E5(,等于,2.110,5,),、,3.7E-2(,等于,3.710,-2,),、,-2.8E-2(,等于,-2.810,-2,),实型常量默认都按双精度,double,型处理。但可以添加后缀“,f”,或“,F”,即表示该数为单精度浮点数。,05 九月 2025,C+面向对象程序设计,2.1.2,常量,字符常量,字符常量是用单引号括起来的一个字符。例如:,a,、,b,、,=,、,+,、,?,。有以下特点:,字符常量只能用单引号括起来,不能用双引号或其它括号。,字符常量只能是单个字符,不能是字符串。,字符可以是字符集中任意字符。但数字被定义为字符型其含义就发生了变化。如,5,和,5,是不同的。,05 九月 2025,C+面向对象程序设计,2.1.2,常量,转义字符是一种特殊的字符常量。转义字符以反斜线“,”,开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。例如,“,n”,就是一个转义字符,其意义是“回车换行”。转义字符主要用来表示那些用一般字符不便于表示的控制代码。广义地讲,字符集中的任何一个字符均可用转义字符来表示。,字符串常量,05 九月 2025,C+面向对象程序设计,2.1.2,常量,字符串常量是由一对双引号括起的字符序列。例如:,“CHINA”,,,“C program”,,,“$12.5”,等都是合法的字符串常量。字符串常量和字符常量是不同的量。它们之间主要有以下区别,字符常量由单引号括起来,字符串常量由双引号括起来,字符常量只能是单个字符,字符串常量则可以含一个或多个字符,字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加,1,。增加的一个字节中存放字符“,0”(ASCII,码为,0),。这是字符串结束的标志。,05 九月 2025,C+面向对象程序设计,2.1.2,常量,布尔常量,布尔型常量只有两个:,true,(真)和,false,(假)。,符号常量,除了前面讲过的直接用文字表示常量外,也可以为常量命名,这种代替常量本身的标识符称为符号常量。,C+,中用,const,定义符号常量。符号常量在使用之前一定要首先声明,常量声明语句的形式为:,const,数据类型说明符 常量名,=,常量值;,05 九月 2025,C+面向对象程序设计,2.1.2,常量,符号常量在声明时一定要赋初值,而在程序中间不能改变其值。,05 九月 2025,C+面向对象程序设计,2.1.3,变量,在程序的执行过程中其值可以变化的量称为变量,变量是需要用名字来标识的。,变量的定义,就像常量具有各种类型一样,变量也具有相应的类型。变量在使用之前需要首先声明其类型和名称。变量名应是合法的标识符。变量声明语句的形式如下:,;,05 九月 2025,C+面向对象程序设计,2.1.3,变量,变量的初始化,在声明一个变量的同时,也可以给它赋以初值,而这实质上就是给对应的内存单元赋值,这一过程称为初始化。,例如:,int a=3,b=5;/,指定,a,,,b,为整型变量,,a,的初值为,3,,,b,的初,/,值为,5,C+,中变量的初始化还有另一种形式,例如:,int a(3),b(5);,需要注意的是,一个未初始化的变量不是没有数值,而是取决于变量所在系统中的存储形式,它可能是系统的默认值或无效值。,05 九月 2025,C+面向对象程序设计,2.1.4,基本输入、输出,C+,中使用标准输入流,cin,和标准输出流,cout,来实现数据的输入与输出。,输出流(,cout,),通过,cout,可以输出一个整数、实数、字符及字符串,,cout,中的插入符“,”,可以连续写多个,每个后面可以跟一个表达式,该表达式通常是获得输入值的变量或对象。,05 九月 2025,C+面向对象程序设计,2.2,运算符和表达式,2.2.1,算术运算符和算术表达式,2.2.2,赋值运算符和赋值表达式,2.2.3,逗号运算符和逗号表达式,2.2.4,关系运算符和关系表达式,2.2.5,逻辑运算符和逻辑表达式,2.2.6,、与,sizeof,运算符,2.2.7,位运算符,2.2.8,三目运算符,05 九月 2025,C+面向对象程序设计,2.2,运算符和表达式,2.2.9,运算符的优先顺序,2.2.10,运算式中的类型转换,05 九月 2025,C+面向对象程序设计,2.2.1,算术运算符和算术表达式,C+,中由算术运算符、操作数和括号构成的表达式称为算术表达式。,C+,中基本算术运算符有:,+,(加法),,(减法或负号),*(乘法),,/,(除法),,%,(求余)。,这些算术运算符和数学运算的概念及运算方法是一致的,但有几点需要说明:,“,”,减法运算,即是双目运算符又是单目运算符,作单目运算符时,是求负运算,例如:,-5,,,-x,等。,05 九月 2025,C+面向对象程序设计,2.2.1,算术运算符和算术表达式,“,/”,除法运算,当参与相除运算的两个操作数均为整型时,其结果也为整型,取商的整数部分,舍去小数,因此表达式,1/2,的结果为,0,。如果两个操作数中有一个是实型,则结果为双精度实型。,“,%”,求余运算,要求参与运算的操作数均为整型。例如:表达式,a%b,其值等于两数相除后的余数,即,a,被,b,除的余数,符号与,a,相同。,优先级和结合性。在一个包含多种算术运算的混合运算中,先乘除、后加减的运算规则是由运算符的优先级来保证的;在算术运算符中,除单目运算符外,其余运算符的结合性都是自左向右。,05 九月 2025,C+面向对象程序设计,2.2.2,赋值运算符和赋值表达式,C+,中赋值运算符“,=”,是一个双目运算符,运算的结合性为自右向左。,带有赋值运算符的表达式被称为赋值表达式,其作用就是将赋值符右边表达式的值赋给左边的操作数。,例如,,x=a+b,就是一个赋值表达式。,在赋值符“,=”,之前加上其它双目运算符可构成复合赋值符。,C+,提供了,10,种复合赋值运算符:,+=,,,=,,*,=,,,/=,,,%=,,,=,,,&=,,,=,,,|=,。,例如:,a+=5,等价于,a=a+5,05 九月 2025,C+面向对象程序设计,2.2.3,逗号运算符和逗号表达式,在语言中逗号“,”,也是一种运算符,称为逗号运算符。,逗号运算符是优先级最低的运算符。,其形式为:表达式,1,表达式,2,表达式,n,在计算时,,C+,将自左向右逐个计算每个表达式,最终整个表达式的结果是最后计算的那个表达式的类型和值。,例如:,j=(i=12,i+8)/,表达式值为,20,05 九月 2025,C+面向对象程序设计,2.2.4,关系运算符和关系表达式,比较两个量的运算符称为关系运算符。,关系运算符将两个数据进行比较,判定两个数据是否符合给定的关系。,例如,“,x y”,中的“,”,表示一个大于关系运算。,C+,提供了,6,种关系运算符:,(小于),,(大于),,=,(大于等于),,=,(等于),,!=,(不等于)。,05 九月 2025,C+面向对象程序设计,2.2.4,关系运算符和关系表达式,有几点需要注意,“,等于”关系运算符是两个等号“,=”,,而不是一个等号“,=”,(赋值运算符)。,在,6,个关系运算符中,前,4,个优先级相同,后,2,个也相同,且前,4,个高于后,2,个。,关系运算符的优先级,低于算术运算符,但高于赋值运算符。,用关系运算符将两个表达式连接起来,进行关系运算的式子就是关系表达式。,05 九月 2025,C+面向对象程序设计,2.2.4,关系运算符和关系表达式,关系表达式的值为逻辑值即“真”或“假”。在,C+,编译系统中,往往将“真”表示为“,true”,或,1,,将“假”表示为“,false”,或,0,。而任何不为,0,的数被认为是“真”,,0,被认为是“假”。,例如设,x1=1,,,x2=2,,,x3=3,,则:,(x1x2)!=x3 /,表达式为,1,。,05 九月 2025,C+面向对象程序设计,2.2.5,逻辑运算符和逻辑表达式,逻辑运算符用于将多个关系表达式或逻辑量(“真”或“假”)组成一个逻辑表达式。,C+,提供了下列三种逻辑运算符:,&,逻辑与,|,逻辑或,!,逻辑非,例如,下面的表达式都是逻辑表达式:,(x=1&(x=0)&(x25),的值为“真”,,(x5),的值为“假”。,05 九月 2025,C+面向对象程序设计,2.2.5,逻辑运算符和逻辑表达式,逻辑运算符的优先级如下:,逻辑非的优先级最高,逻辑与次之,逻辑或最低,即:,!(非),&,(与),|,(或),与其它种类运算符的优先关系:,!算术运算 关系运算,&|,赋值运算,05 九月 2025,C+面向对象程序设计,2.2.6,、与,sizeof,运算符,自增、自减运算符,单目运算符自增(,+,)和自减(,)的作用是使整型变量的值增,1,或减,1,。这两个运算符都有前置和后置两种使用形式。,例如:,+i,与,i+,的作用相当于,i=i+1,;,i,与,i,的作用相当于,i=i1,。,这里需要注意的是:,自增(,+,)和自减(,)运算符只能用于变量,而不能用于常量或表达式,如,3+,或,(a+b)+,都是不合法的。,05 九月 2025,C+面向对象程序设计,2.2.6,、与,sizeof,运算符,+,和,的结合性是“自右至左”。若自增(,+,)和自减(,)仅用于某个变量的增,1,和减,1,,则前置和后置两种使用形式是等价的,但如果将自增(,+,)和自减(,)和其他运算符组合在一起,则前置和后置两种使用形式在求值次序上就会产生不同:,+i,,,i,(在使用,i,参与其他运算之前,先使,i,的值加(减),1,),i+,,,i,(在使用,i,参与其他运算之后,再使,i,的值加(减),1,),05 九月 2025,C+面向对象程序设计,2.2.6,、与,sizeof,运算符,sizeof,运算符,sizeof,运算符用于计算操作数在内存中所占的字节数。,它使用的语法形式为:,sizeof(),sizeof(),运算结果返回值为“数据类型”所指定的类型或“表达式”的结果类型所占的字节数。,例如:,sizeof(int)/,计算整型,int,所占内参的字节数,sizeof(hello)/,计算字符串常量的实际长度,05 九月 2025,C+面向对象程序设计,2.2.7,位运算符,位运算符是对操作数按其在计算机内表示的二进制数逐位地进行逻辑运算或移位运算。,C+,语言提供了,6,种位运算,:,位逻辑运算符,“,按位与”运算符,&,运算规则:参加运算的两个操作数,如果两个数相应位的值都是,1,,则该位的结果值为,1,,否则为,0,。,例如:如果要保留整数,a,的低字节,屏蔽掉其高字节,只需要将,a,和,b,进行按位与运算即可,其中,b,的高字节每位置为,0,,低字节每位置为,1,,即,00101010 01010010&00000000 11111111=00000000 01010010,05 九月 2025,C+面向对象程序设计,2.2.7,位运算符,“按位或”运算符,|,运算规则:参加运算的两个操作数,如果两个数相应位的值都是,0,,则该位的结果值为,0,,否则为,1.,例如:如果把,a,的第,10,位置为,1,,而且不要破坏其它位,可以对,a,和,b,进行“按位或”运算,其中,b,的第,10,位置为,1,,其它位置为,0,,即,00100000 01010010|00000010 00000000=00100010 01010010,“按位异或”运算符,运算规则:参加运算的两个操作数,如果两个数的相应位的值不同,则该位的结果值为,1,,否则为,0,。,例如:如要把,a,的奇数位翻转,可以对,a,和,b,进行“按位异或”运算,其中,b,的奇数位置为,1,,偶数位置为,0,,即,00000000 01010010 01010101 01010101=01010101 00000111,05 九月 2025,C+面向对象程序设计,2.2.7,位运算符,“按位取反”运算符,运算规则:对一个操作数的每一位都取反,即将,1,变为,0,,,0,变为,1,。,移位运算符,左移运算符,运算规则:对运算符,左边的操作数的每一位全部左移右边运算量表示的位数,右边空出的位补,0,。,左移,1,位相当于该数乘以,2,,左移,n,位相当于该数乘以,2,n,。,例如:,char a=0 x21,;,则,a2,的过程,001000012=10000100,即,a,运算规则:对运算符,左边的运算量的每一位全部右移右边运算量表示的位数,右边低位被移出去舍弃掉,空出的高位补,0,还是补,1,,分两种情况,对无符号数进行右移时,空出的高位补,0,。这种右移称为逻辑右移。,例如:,unsigned char a=0 x8a,;,a,:,10001010,等于十进制数,138,a1,:,01000101 0,等于十进制数,69,补,0,舍弃,对带符号数进行右移时,空出的高位全部以符号位填补。即正数补,0,,负数补,1,。这种右移称为算术右移。,05 九月 2025,C+面向对象程序设计,2.2.7,位运算符,例如,char a=0 x8a,;,a,:,10001010,等于十进制数,-118,a1,:,11000101 0,等于十进制数,-59,补,1,舍弃,位赋值运算符,位运算符与赋值运算符结合可以组成位赋值运算符。,05 九月 2025,C+面向对象程序设计,2.2.8,三目运算符,C+,中唯一的三目运算符是条件运算符,语法格式为:,?:,“条件表达式”是,C+,中可以产生“真”和“假”结果的任何表达式,如果条件表达式的结果为“真”,则执行表达式,1,,否则执行表达式,2,。例如:,n=(ab)?1:0;/,如果,ab,成立,则,n,的,/,值为,1,,否则为,0,05 九月 2025,C+面向对象程序设计,2.2.9,运算符的优先顺序,运算符优先顺序如下表:,05 九月 2025,C+面向对象程序设计,2.2.9,运算符的优先顺序,05 九月 2025,C+面向对象程序设计,2.2.10,运算式中的类型转换,当表达式中出现了多种类型数据的混合运算时,往往需要进行类型转换。表达式中的类型转换分为两种:自动转换和强制转换。,自动转换,自动转换的基本原则是将数据类型按照从低到高的顺序进行转换。类型越高,数据的表示范围越大,精度也越高,各种类型的高低顺序如下:,char,、,short,、,int,、,unsigned,、,long,、,unsigned long,、,float,、,double,05 九月 2025,C+面向对象程序设计,2.2.10,运算式中的类型转换,自动转换遵循以下规则,若参与运算量的类型不同,则先转换成同一类型,然后进行运算。,转换按数据长度增加的方向进行,以保证精度不降低。如,int,型和,long,型运算时,先把,int,量转成,long,型后再进行运算。,所有的浮点运算都是以双精度进行的,即使仅含,float,单精度量运算的表达式,也要先转换成,double,型,再作运算。,char,型和,short,型参与运算时,必须先转换成,int,型。,在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度比左边量的数据类型长度长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。,05 九月 2025,C+面向对象程序设计,2.2.10,运算式中的类型转换,强制转换,强制类型转换是通过类型说明符和括号来实现的,其一般形式为:,(),或,(),例如:,(float)a /,把,a,转换为实型,(int)(x+y)/,把,x+y,的结果转换为整型,05 九月 2025,C+面向对象程序设计,2.3,基本控制结构,2.3.1,表达式语句、空语句和复合语句,2.3.2,选择控制语句,2.3.3,循环控制语句,2.3.4 break,和,continue,语句,实训,2,程序控制结构的应用,05 九月 2025,C+面向对象程序设计,2.3.1,表达式语句、空语句和复合语句,顺序结构程序就是由顺序执行语句组成的,程序运行是按照书写的顺序进行,不发生控制转移,所以它是最简单的。,表达式语句,表达式语句由表达式后加一个分号构成。,例如:,a+b;,num=3;,空语句,空语句仅由一个分号构成。,例如:;就是一个空语句,复合语句,复合语句是由一对大括号,括起来的两条或两条以上的语句构成的。,05 九月 2025,C+面向对象程序设计,2.3.1,表达式语句、空语句和复合语句,例如:,需要注意的是,在复合语句中定义的变量只作用于该复合语句的范围,而在复合语句外,这些变量却不能被调用。,05 九月 2025,C+面向对象程序设计,void main(),t=x,;,x=y,;,y=t,;,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服