收藏 分销(赏)

VisualC++6.0实用教程.ppt

上传人:a199****6536 文档编号:14083583 上传时间:2026-06-20 格式:PPT 页数:412 大小:2.70MB 下载积分:8 金币
下载 相关
VisualC++6.0实用教程.ppt_第1页
第1页 / 共412页
VisualC++6.0实用教程.ppt_第2页
第2页 / 共412页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,VisualC+6.0实用教程,1.1,开发环境概述,界面由标题栏、菜单栏、工具栏、项目工作区窗口、文档窗口、输出窗口以及状态栏等组成,如图。,图1.2 Visual C+6.0开发环境,工具栏,菜单栏,项目工作区窗口,输出窗口,文档窗口,输出窗口标签,标题栏,状态栏,1.3开发环境的工具栏,1.3.1,工具栏概述,标准工具栏,图1.12 标准工具栏,New Text File,Cut,Paste,Redo,Output,Find in Files,Search,Open,Save All,Copy,Undo,Workspace,Window List,Find,1.3开发环境的工具栏,类向导工具栏,小型编连工具栏,图1.13 WizardBar,Class,Filter,Members,Actions,图1.14 Build MiniBar,Compile,Stop Build,Go,Build,Execute,Add/Remove breakpoints,1.4项目和项目工作区,还有相应的,Debug,或,Release,、,Res,等子文件夹。若创建的单文档应用程序项目名是,Ex_Sdi,,则各文件的布局如图。,VC,应用程序向导创建项目时,系统会自动为项目创建,Win32 Debug,的运行程序,并使用相应的缺省配置。和,Win32 Release,版本的区别在于:,Debug,版本的运行程序有相应的调试信息码,,Release,版本的运行程序没有,但,Release,版本的运行程序经过代码的优化,其程序的运行速度被最大加速。,注意,:在开发环境中,,VC,是通过左边的项目工作区窗口来对项目进行各种管理。项目工作区窗口包含三个页面,是,ClassView,页、,ResourceView,页和,FileView,页。,图1.18 项目文件的布局,Ex_Sdi文件夹,Debug或Release,文件夹,Res文件夹,类文件.cpp,.h,资源文件Ex_Sdi.rc,项目及项目工作区文件,其他文件,编连过程产生的文件,运行文件Ex_Sdi.exe,图标文件Ex_Sdi.ico等,工具栏资源Toolbar.bmp,其他资源Ex_Sdi.rc2等,1.4项目和项目工作区,1.4.2 ClassView,用以显示项目中的所有的类信息。假设打开的项目名为,Ex_Sdi,,单击项目区窗口底部的,ClassView,,则显示出,“,Ex_Sdi classes,”,的树状结点,在它的前面是一个图标和一个套在方框中的符号,“,+,”,,单击符号,“,+,”,或双击图标,,Ex_Sdi,中的所有类名将被显示,如,CMainFrame,、,CEx_SdiApp,、,CEx_SdiDoc,、,CEx_SdiView,等,(,如图所示,),。,图1.19 ClassView,图1.20 ResourceView,图1.21 FileView,1.4,项目和项目工作区,1.4.3,ResourceView,包含了项目中所有资源的层次列表。每一种资源都有自己使用的图标。,1.4.4,FileView,FileView,可将项目中的所有文件分类显示,如图。,每一类文件在,FileView,页面中都有自己的目录项,(,节点,),。可以在目录项中移动文件,还可以创建新的目录项以及将一些特殊类型的文件放在该目录项中。,创建一个新目录项,可在添加目录项的地方右击,选择,“,New Folder,”,,如图,输入目录项名称和相关的文件扩展名,单击,OK,。,图1.22 “New Folder”对话框,1.5,资源,1.5.1,资源与资源标识,资源的分类,(1),快捷键列表,(2),工具栏按钮,(3),鼠标指针,(4),对话框,(5),HTML,(6),图标,(7),菜单,(8),字符串列表,(9),版本信息,标识符,标识符的命名规则:,(1),在标识符名称中允许使用字母,az,、,AZ,、,09,以及下划线。,(2),标识符名称不区分大小写字母。,(3),不能以数字开头,如,8BIT,是不合法的标识符名。,(4),字符个数不得超过,247,个。,1.5,资源,1.5.2,资源基本操作,创建资源,(1),从,“,Insert,”,菜单选取,“,Resource,”,;或用快捷键,Ctrl+R,打开对话框,如图。,New,用来创建一个由,Resource Type,列表中指定类型的新资源,,Custom,按钮用来创建,Resource Type,列表中没有的新类型的资源,,Import,按钮用于将外部已有的位图、图标、光标或其他定制的资源添加到当前应用程序中。,(2),从,Resource Type,列表中选择一种资源类型,而后按,New,按钮。,(3),在项目工作区窗口的,ResourceView,页面中,看到了刚才选中的资源的缺省标识符,而且相应的资源编辑器自动打开。,图1.23 “Insert Resource”对话框,1.5,资源,打开资源,如果需要对已有资源进行查看或修改,可以首先切换到项目工作区窗口的,ResourceView,标签页,然后选中要打开的资源,双击鼠标左键或者按,Enter,键,这时相应的资源编辑器也会相应自动打开。,删除、复制资源,如果删除一个已有的资源,可以首先切换到项目工作区窗口的ResourceView标签页,然后选中要打开的资源,按Del键或者利用Edit菜单下的Delete菜单项可实现删除。复制资源的过程与删除类似,选中要打开的资源,按住Ctrl键不放,并拖动鼠标左键或利用Edit菜单中的Copy和Paste菜单命令进行操作,它同其他软件的复制过程相同。,保存资源,当设计或修改好一个资源后,用File菜单的Save菜单命令或利用快捷键Ctrl+S将其保存在当前资源文件中。,1.5,资源,1.5.3,资源文件的管理,资源文件一经创建,其中所包含的资源也就随之而定,与资源相对应的标识符也被保存在,Resource.h,头文件中。,一般,在一个资源文件,.RC,中所保存的所有资源已经满足的需要了,尽管如此,,VC,仍然允许用多个文件来存放资源。用,View,菜单中的,Resource Includes,菜单命令打开,“,Resource Includes,”,对话框,(,如图,1.24,所示,),时,可以看到,Compile-time directives,编辑框中已经含有,#include resEx_Sdi.rc2,。,1.5.4,资源编辑器,所有,Windows,资源都可以用,VC,提供的资源编辑器来编辑。,图1.24 “Resource Includes”对话框,1.6,一个控制台应用程序,1.6.1,用,AppWizard,创建,用,AppWizard,创建一个控制台应用程序可按下列步骤进行:,(1),选择“,File,”,“,New,”菜单命令,显示出“,New,”对话框。,(2),选择,Projects,标签,选中,Win32 Console Application,项。,(3),在,Project Name,框中键入控制台应用程序项目名称。第一次使用时最好确定该项目所在的文件夹以便于源文件的管理,既可在,Location,下的编辑框中直接键入文件夹名称,也可单击,Browse,按钮择一个已有的文件夹,如图。,图1.25 在“New”对话框中建立Ex_Hello控制台应用程序,1.6,一个控制台应用程序,(4),单击,OK,。如图。选中,A simple application,项。,(5),单击,Finish,,如图,单击,OK,按钮系统将自动创建此应用程序。,图1.26 选择控制台应用程序类型,图1.27 Ex_Hello信息对话框,1.6,一个控制台应用程序,1.6.2,理解程序框架,在项目工作区窗口中只能看到,ClassView,和,FileView,标签,如图。切换到,FileView,页面,可以看到,AppWizard,为生成了,Ex_Hello.cpp,、,Stdafx.cpp,、,Stdafx.h,以及,ReadMe.txt,四个文件。,Stdafx.cpp,是一个只有一条语句的空文件,,Stdafx.h,是,VC,为每个项目配置的用来预编译的文件;,ReadMe.txt,是,VC,为每个项目配置的说明文件,包括对,AppWizard,产生文件类型的说明以及操作的一些技巧;,Ex_Hello.cpp,是,AppWizard,产生的,“,真正,”,具有实际意义的程序源代码文件,几乎所有的代码都是添加在这个文件中的。,图1.28 Ex_Hello项目工作区内容,1.6,一个控制台应用程序,1.6.3,添加程序代码,(1),单击项目工作区窗口的,ClassView,标签项,将显示,Ex_Hello,类信息。,(2),单击各目录项前面的“,+,”号,将所有目录项展开。,(3),双击,main,函数名,在文档窗口中显示出,main,函数体所在的源文件,Ex_Hello.cpp,,且文本光标已移至此函数名的前面。,(4),键入下列代码:,.,#include/,输入输出操作的头文件,int main(int argc,char*argv),coutHello world!n;,return 0;,(5),用,Save All,命令项或标准工具栏的,Save All,按钮将所有文件保存。,1.6,一个控制台应用程序,1.6.4,编译运行,打开,Build,菜单,选用,Build Ex_Hello.exe,菜单项或按快捷键,F7,,系统对,Ex_Hello,进行编译、连接,同时在输出窗口中在线地显示出编译的内容,当出现,Ex_Hello.exe-0 error(s),0 warning(s),字样时,表示,Ex_Hello.exe,可执行文件已经正确无误地生成了。,在,Build,菜单中选取,Execute Ex_Hello.exe,命令或按快捷键,Ctrl+F5,,就可以运行刚刚生成的,Ex_Hello.exe,,如图。,在,Ex_Hello,窗口中,,“,Press any key to continue,”,是系统自动加上去的,。,图1.29 Ex_Hello运行结果,1.7,程序调试,1.7.1,修正语法错误,调试最初的任务主要是修正一些语法错误,这些错误包括:,(1),未定义或不合法的标识符,如函数名、变量名和类名等。,(2),数据类型或参数类型及个数不匹配。,上述错误在编译后,会在,Output,窗口中列出所有错误项。若将光标移到,Output,窗口中的错误编号上,按,F1,键可启动,MSDN,并显示出错误的内容,从而帮助用户理解错误产生的原因。,为了能使快速定位到错误产生的源代码位置,提供下列一些方法:,(1),在,Output,窗口中双击某个错误,或将光标移到该错误处按,Enter,键,则该错误被亮显,状态栏上显示出错误内容,并定位到相应的代码行中,且该代码行最前面有个蓝色箭头标志。,(2),按,F4,键可显示下一错误,并定位到相应的源代码行。,(3),在,Output,窗口中的某个错误项上,右击鼠标,在弹出的快捷菜单中选择“,Go To Error/Tag,”命令。,语法错误被修正后,编译时会出现类似,“,Ex_Hello.exe-0 error(s),0 warning(s),”,的字样。并不是说,此项目完全没有错误,可能还有,“,异常,”,、,“,断言,”,等其他错误,而这些错误在编译时是不会显示出来的,只有当程序运行后才会出现。,1.7,程序调试,1.7.2,设置断点,调试的断点可以有下列类型:,(1),位置断点、,(2),数据断点、,(3),条件断点。,快捷方式,三种快捷方式可以设置位置断点:,(1),按快捷键,F9,。,(2),在,Build,工具栏上单击,按钮。,(3),在需要设置断点的位置右击,选择,“,Insert/Remove Breakpoint,”,命令。,图1.30 设置的断点,断点标志,断点标志,程序中断的位置,1.7,程序调试,使用,Breakpoints,对话框,(1),凡是可以使用的断点前均有选中标记,(,),。若单击前面的复选框,则该断点被禁止。按钮,Remove,和,Remove All,清除当前选中的断点或全部断点。,(2),在,Location,页面中,“,Break At,”文本框中可以输入断点的名称。单击,Edit Code,可以查看断点位置处的源代码或目标代码。单击,Condition,,可以输入程序运行中断所需要的表达式条件,从而设置一个条件断点。,(3),在,Data,页面中,提供了一种设置数据断点的方法,如图。在,Data,页面的最上面编译框中,可以键入任何有效的,C/C+,表达式,它可以是赋值语句,可以是条件语句,可以是单独的一个变量名。在程序运行过程中,若变量的值有所改变,或者条件表达式变成真时,则程序在该断点处中断。,图1.31 “Breakpoints”对话框,图1.32 Data页面,1.7,程序调试,1.7.3,启用调试器,选择,“,Project,”,菜单,“,Settings,”,命令,如图。在调试程序时必须使用,Debug,版本。通过选择,“,Debug info,”,组合框来设置调试选项。含义如表。还可以在,“,Project Settings,”,对话框中的,“,Link,”,页面中,选中,“,Generate mapfile,”,项,使其在编连时产生相应的映射文件。,选择,“,Build,”,菜单,“,Start Debug,”,子菜单的,“,Go,”,、,“,Step Into,”,或,“,Run To Cursor,”,命令,就可以启动调试器了。,图1.33 “Project Settings”对话框,1.7,程序调试,1.7.4,控制程序运行,当程序开始运行在,Debug,状态下时,程序会由于断点而停顿下来。这时可以看到有一个小箭头,它指向即将执行的代码。而且,原来的“,Build,”菜单就会变成“,Debug,”菜单,如图,1.34,所示。其中有四条命令,Step Into,、,Step Over,、,Step Out,和,Run to Cursor,是用来控制程序运行的,其含义是:,n,Step Over,的功能是运行当前箭头指向的代码,(,只运行一条代码,),。,n,Step Into,的功能是如果当前箭头所指的代码是一个函数的调用,则用,Step Into,进入该函数进行单步执行。,n,Step Out,的功能是如果当前箭头所指向的代码是在某一函数内,用它使程序运行至函数返回处。,n,Run to Cursor,的功能是使程序运行至光标所指的代码处。,1.7,程序调试,1.7.5,查看和修改变量的值,调试器还提供一系列的窗口,用来显示各种不同的调试信息。可借助,“,View,”,菜单下的,“,Debug Windows,”,子菜单可以访问它们。当启动调试器后,,VC,的开发环境会自动显示出,Watch,和,Variables,两个调试窗口,且,Output,窗口自动切换到,Debug,页面,如图。,图1.34 Debug菜单,Watch窗口,Output窗口,Variables窗口,1.7,程序调试,QuickWatch,窗口的使用,用来帮助用户快速查看或修改某个变量或表达式的值。若仅需要快速查看变量或表达式的值,则只需要将鼠标指针直接放在该变量或表达式上,片刻后,系统会自动弹出一个小窗口显示出该变量或表达式的值。,启动调试器后,选择“,Debug,”,“,QuickWatch,”或按快捷键,Shift+F9,,如图。,Expression,框可以让用户键入变量名或表达式,而后按,Enter,键或单击,Recalculate,,就可以在,Current value,列表中显示出相应的值。若想要修改其值的大小,则可按,Tab,键或在列表项的,“,Value,”,域中双击该值,再输入新值按,Enter,键就可以了。,单击,Add Watch,按钮可将刚才输入的变量名或表达式及其值显示在,“,Watch,”,窗口中。,图1.36 “QuickWatch”窗口,1.7,程序调试,Watch,窗口的使用,选择“,View,”,“,Debug Windows,”,“,Watch,”,四个页面:,Watch1,、,Watch2,、,Watch3,和,Watch4,,在每一个页面中有要查看的变量或表达式,可以将一组变量或表达式的值显示在同一个页面中。使用,Watch,窗口进行操作时,要注意到下面一些技巧:,(1),添加新的变量或表达式,选定窗口中某个页面,在末尾的空框处,单击左边的,“,Name,”,域,输入变量或表达式,按,Enter,键。同时,又在末尾处出现新的空框,如图。,在变量或表达式中右击,选择“,Properties,”查看其类型。,(2),修改变量或表达式的值,选中相应的变量或表达式,按,Tab,键或在列表项的“,Value,”域中双击该值,再输入新值按,Enter,键就可以了。,(3),删除变量或表达式,单击Del键可将当前选定的变量或表达式删除。,图1.37 添加新的变量或表达式,空框,1.7,程序调试,Variables,窗口的使用,Variables,窗口能快速访问程序当前的环境中所使用的重要变量。选择“,View,”,“,Debug Windows,”,“,Variables,”,其中有三个页面:,Auto,页面,显示出当前语句和上一条语句使用的变量,还显示使用,Step Over,或,Step Out,命令后函数的返回值。,Locals,页面,显示出当前函数使用的局部变量。,This,页面,显示出由,This,所指向的对象。,Variables,窗口还有一个,“,Context,”,框,从下拉列表中可以选定当前,Call Stack,的指令,以确定在页面中显示变量的范围,如图。,图1.38 “Context”框,第2章,基本,C+,语言,2.1 C+,程序结构,2.2,数据类型和基本输入输出,2.3,运算符和表达式,2.4,基本语句,2.5,函数和预处理,2.6,构造类型,2.7,指针和引用,上机训练,2.1C+,程序结构,2.1.1,几个,C+,程序,例,1,在屏幕上输出一个由星号形成的三角形。,/,输出星号的三角形阵列,#include,void DoDraw(int num);/,声明一个全局函数,void main(),int num=5;/,定义并初始化变量,DoDraw(num);/,函数的调用,void DoDraw(int num)/,函数的定义,for(int i=0;inum;i+)/,循环语句,for(int j=0;j=i;j+),cout*;,coutn;,2.1C+,程序结构,例,Ex_Simple2,用类的概念重写例,Ex_Draw,。,/,输出星号的三角形阵列,#include,class CDrawArray/,定义一个类,public:,void DoDraw(int num);/,声明类的公有成员函数,;,void CDrawArray:DoDraw(int num)/,成员函数的实现,for(int i=0;inum;i+),for(int j=0;j=i;j+),cout*;,coutn;,void main(),int num=5;,CDrawArray myDraw;/,定义类的一个对象,myDraw.DoDraw(num);/,调用此对象的成员函数,2.1C+,程序结构,2.1.2,C+,程序的基本组成,C+,程序往往由预处理命令、语句、函数、变量和对象、输入与输出以及注释等几个基本部分组成的。,(1),预处理命令,在程序的一开始出现含有以,“,#,”,开头的命令,它们是预处理命令。三类预处理命令:宏定义命令、文件包含命令和条件编译命令。,(2),语句,可以是用来判断的条件语句,可以是用来反复运行的循环语句等。,(3),函数,一个程序由若干个函数组成。有的是系统中所提供的库函数,有的是根据自己需要自己编制设计的函数。程序中必须有一个且只能有一个主函数,main,。,(4),变量和对象,变量的类型有整型,(int),、字符型,(char),以及浮点型,(float),等。对象通常是指,“,类,”,的实例,(,具有该,“,类,”,类型的变量,),,如,myDraw,是类,CDrawArray,的对象。,(5),输入与输出,使用输入与输出可以要求键入一些数值或把计算的结果显示在屏幕上。,(6),注释,程序的目的不仅在于实现某种功能、解决某个问题,而且还在于数据结构和算法的交流。注释能提高程序的可读性,帮助用户对程序的理解。,2.1C+,程序结构,2.1.3,C+,程序的书写风格,标识符命名,用来,标识变量名、函数名、数组名、类名、对象名、类型名、文件名等的有效字符序列。,标识符命名的好坏也会影响程序的可读性,命名时注意:,(1),合法性,标识符由大小写字母、数字字符,(09),和下划线组成,第一个字符必须为字母或下划线。任何标识符中都不能有空格、标点符号及其他字符。,注意,,标识符的大小写是有区别的。用户定义的标识符不能和系统的关键字同名。,(2),有效性,标识符的长度,(,组成标识符的字符个数,),是任意的,最好不超过,32,个,因为有的编译系统只能识别前,32,个字符,也就是说前,32,个字符相同的两个不同标识符被有的系统认为是同一个标识符。,(3),易读性,在定义标识符时,若能做到,“,见名知意,”,就可以达到易读性的目的。,2.1C+,程序结构,缩进和注释,缩进是指程序在书写时不要将程序的每一行都由第一列开始,在适当的地方加进一些空行或空格。它同注释一样,也是为了提高程序的可读性。,注释要注意的是:,(1),注释应在编程的过程中同时进行,不要指望程序开发完成后再补写注释。那样只会多花好几倍的时间,更为严重的是,时间长了以后甚至会读不懂自己写的程序。,(2),必要的注释内容应包含:源程序的总体注释,(,文件名、作用、创建时间、版本、作者及引用的手册、运行环境等,),、函数注释,(,目的、算法、使用的参数和返回值的含义、对环境的一些假设等,),及其他的少量注释。千万不要陈述那些一目了然的内容,否则会使注释的效果适得其反。,2.2,数据类型和基本输入输出,2.2.1,基本数据类型,使用基本数据类型时需要注意:,(1),无符号和有符号的区别在于数值最高位的含义。对,signed,类型,最高位是符号位,其余各位表示数值大小;,unsigned,类型的各个位都用来表示数值大小;相同基本数据类型的,signed,和,unsigned,的数值范围是不同。,(2),char、short、int和long可统称为整型。缺省时,char、short、int和long本身是有符号(signed)的。,2.2,数据类型和基本输入输出,2.2.2,常量,整型常量,(1),十进制整型常量,:,即十进制整数,如,34,、,128,等。,(2),八进制整型常量,:,以,0,开头的数,由,0,至,7,的数字组成。,(3),十六进制整型常量,:,以,0 x,或,0X,开头的数,由,0,至,9,、,A,至,F,或,a,至,f,组成。,需要注意的是:,整型常量中的长整型,(long),要以,L,或小写字母,l,作为结尾。,整型常量中的无符号型,(unsigned),要以,U,或,u,作为结尾。,浮点型常量,(1),十进制数形式:由整数部分和小数部分组成。,(2),指数形式,:,采用科学表示法,能表示出很大或很小的浮点数。,若浮点型常量是以,F(,或,f),结尾的,则表示单精度类型,(float),,以,L(,或小写字母,l),结尾的,表示长双精度类型,(long double),。若一个浮点型常量没有任何说明,表示双精度类型,(double),。,2.2,数据类型和基本输入输出,字符常量,字符常量是用单引号括起来的一个字符。,2.2,数据类型和基本输入输出,字符串常量,字符串常量是一对双引号括起来的字符序列。可以包含空格、转义序列符或其他字符。由于双引号是字符串的分界符,因此如果需要在字符串中出现双引号则必须用,“,”,”,表示。例如:,“,Please press,”,F1,”,to help!,”,这个字符串被解释为:,Please press,“,F1,”,to help!,字符串常量必须在同一行书写,若一行写不下,则需要用,来连接,不要将字符常量和字符串常量混淆不清,它们主要的区别如下:,(1),字符常量用单引号括起来,占一个字节;字符串常量是用双引号括起来,至少占用两个字节。例如,a,是字符常量,占有的一个字节用来存放字符,a,的,ASCII,码值,而,“,a,”,是字符串常量,它的长度不是,1,而是,2,,除了字符,a,之外,它的末尾还有个,0,字符。每个字符串的末尾都有一个这样的字符。,(2),字符常量实际上是整型常量的特殊形式,它可以参与常用的算术运算;而字符串常量则不能。例如:,int b=,a,+3;/结果b为100,这是因为将,a,的ASCII码值97参与运算,2.2,数据类型和基本输入输出,符号常量,例,Ex_PI1,用,#define,定义符号常量。,#include,#define PI 3.14159,void main(),double r=100.0,area;,area=PI*r*r;,cout,圆的面积是:,area n;,2.2,数据类型和基本输入输出,2.2.3,变量,变量的定义,定义变量是用下面的格式语句进行定义的:,;,需要说明的是:,(1),在同一个程序块中,不能有两个相同的变量名。,(2),没有字符串变量类型,字符串是用字符类型的数组或指针来定义的。,(3),与其他语言相比,,C+,变量的定义比较自由。,变量的初始化,程序中常需要对一些变量预先设置初值,这一过程称为初始化。可以在定义变量时同时使变量初始化,也可以在多个变量的定义语句中单独对某个变量初始化。,需要注意的是,一个未初始化的变量不是没有数值,而是取决于变量在系统中的存储形式,它可能是系统的缺省值或无效值。,2.2,数据类型和基本输入输出,2.2.4,基本输入输出,输出流,(cout),通过,cout,可以输出一个整数、实数、字符及字符串,,cout,中的插入符,“,.,其中,提取符,“,”,可以连续写多个,每个后面跟一个表达式,该表达式通常是获得输入值的变量或对象。,2.3,运算符和表达式,2.3.1,算术运算符,算术运算符如下所示:,+(正号运算符,如+4,+1.23等),-(负号运算符,如-4,-1.23等),*(乘法运算符,如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等),注意:,(1),除法运算,两个整数相除,结果为整数,如,7/5,的结果为,1,,它是将小数部分去掉,而不是四舍五入;若除数和被除数中有一个是浮点数,则进行浮点数除法,结果是浮点型。如,7/5.0,、,7.0/5,、,7.0/5.0,的结果都是,1.4,。,(2),求余运算,求余运算要求参与运算的两个操作数都是整型,结果是两个数相除的余数。例如,40%5,的结果是,0,,,40%11,的结果是,7,。要理解负值的求余运算,例如,40%,-,11,结果是,7,,-,40%11,结果是-,7,,-,40%,-,11,结果也是-,7,。,2.3,运算符和表达式,(3),优先级和结合性,将表达式的求值中多种运算之间的先后关系,(,即运算符之间的优先关系,),用运算符的优先级表示,优先级的数值越小优先级越高。在算术运算符中,单目运算符的优先级最高,其次是乘、除和求余,最后是加减。,优先级相同的运算符,则按它们的结合性进行处理。运算符的结合性是指运算符和操作数的结合方式,有,“,从左至右,”,和,“,从右至左,”,。,“,从左至右的结合,”,指运算符左边的操作数先与运算符相结合,再与运算符右边的操作数进行运算;自右至左的结合次序是将运算符右边的操作数先与运算符相结合。,在算术运算符中,除单目运算符外,其余运算符的结合性都是从左至右的。,(4),关于书写格式,在使用运算符进行数值运算时,若书写时没有在双目运算符两边加上空格,则有时编译系统会做出与自己想象中不同的理解。,书写时,有时有意识地加上一些括号。这样不仅增强程序的可读性,而且,尤其当对优先关系犹豫时,加上括号是保证正确结果的最好方法。,(5),溢出处理,某数除以,0,或当其它浮点溢出时,编译系统将报告错误并终止程序运行。但对整数溢出,系统却不认为是一个错误。,2.3,运算符和表达式,2.3.2,赋值运算符,复合赋值,10,种复合赋值运算符:+=,-=,*=,/=,%=,,=,|=,=,=,注意:,(1),在复合赋值运算符之间不能有空格,例如,+=,不能写成,+=,。,(2),所有运算符高于逗号运算符,复合赋值运算符的结合性是从右至左的。,多重赋值,指在一个赋值表达式中出现两个或更多的赋值符,(,“,=,”,),,例如:,nNum1=nNum2=nNum3=100;,赋值符的结合性是从右至左,上述赋值的过程:首先对,nNum3=100,求值,将,100,赋值给,nNum3,,同时该赋值表达式取得值,100,;然后将该值赋给,nNum2,,该赋值表达式也取得值,100,;最后将,100,赋给,nNum1,。,2.3,运算符和表达式,2.3.3,数据类型转换,自动转换,将数据类型从低到高进行转换,例如:,10+,a,+2*1.25-5.0/4L运算:,(1),2*1.25,的运算,将,2,和,1.25,都转换成,double,型,结果为,double,型的,2.5,。,(2),长整型,4L,和,5.0,转换成,double,型,,5.0/4L,结果为,double,型,值为,1.25,。,(3),进行,10+,a,的运算,先将,a,转换成整数,97,,运算结果为,107,。,(4),整数,107,和,2.5,相加,先将整数,107,转换成,double,型,值为,109.5,。,(5),进行,109,.,5,-,1,.,25,的运算,结果为,double,型的,108,.,25,。,强制转换,强制类型有下列两种格式:,(),、,(),。,整型,(int),无符号整型,(unsigned),长整型,(long),无符号长整型,(unsigned long),双精度浮点型,(double),短整型,字符型,(short,char),单精度浮点型,(float),图2.1 类型转换的顺序,2.3,运算符和表达式,2.3.4,关系运算符,是比较两个操作数是否符合给定的条件。若符合条件,则关系表达式的值为,“,真,”,,否则为,“,假,”,。在编译系统中,往往将,“,真,”,表示为,“,true,”,或,1,,将,“,假,”,表示为,“,false,”,或,0,。而任何不为,0,的数被认为是,“,真,”,,,0,被认为是,“,假,”,。,由于关系运算需要两个操作数,所以关系运算符都是双目运算符。,提供了,6,种关系运算符:,(,小于,),,,(,大于,),,,=(,大于等于,),,,=(,相等于,),!=(,不等于,),其中,前,4,种的优先级相同且高于后面的两种。例如:,a=b c,等效于,a=(b c),但关系运算符的优先级低于算术运算符,(,其他可参见表,2.6),。例如:,a=b c,等效于,a=(b c),2.3,运算符和表达式,2.3.5,逻辑运算符,将多个关系表达式或逻辑量组成一个逻辑表达式。提供了,3,种逻辑运算符:,!,逻辑非,(,单目,):,指将,“,真,”,变,“,假,”,,,“,假,”,变,“,真,”,。,&,逻辑与,(,双目,):,指两个操作数都是,“,真,”,时,结果为,“,真,”,,否则为,“,假,”,。,|,逻辑或,(,双目,):,指两个操作数中有一个是,“,真,”,时,结果为,“,真,”,,只有它们都为,“,假,”,时,结果才为,“,假,”,。,“,逻辑非,”,、,“,逻辑与,”,和,“,逻辑或,”,的优先级依次从高到低,且,“,逻辑非,”,的优先级还比算术运算符和关系运算符高,而,“,逻辑与,”,和,“,逻辑或,”,的优先级却比关系运算符要低。例如:,0|2 4-!0,表达式的运算过程是这样的:,(1),进行,“,!0,”,的运算,结果为,1(,“,真,”,),。,(2),进行,“,8 4-1,”,的运算,即,“,8 3,”,,结果为,0(,“,假,”,),。,(3),进行,“,0|0,”,的运算,结果为,0(,“,假,”,),。,表达式的值为,0,。,2.3,运算符和表达式,2.3.6,位运算符,是对操作数按其在计算机内表示的二制数逐位地进行逻辑运算或移位运算,参与运算的操作数只能是整型常量或变量。提供了六种位运算符:,(按位求反,单目运算符):将一个二进制数的每一位求反,即,0,变成,1,,,1,变成,0,。,(右移,双目运算符):将左操作数的二进制值向右移动指定的位数,右移后,移出的低位舍弃。无符号数高位补,0,;有符号数高位补符号位。,&(按位与,双目运算符):将两个操作数对应的二进制位进行,逻辑与,操作。,(按位异或,双目运算符):将两个操作数对应的二进制位进行,异或,操作。,|(按位或,双目运算符):将两个操作数对应的二进制位进行,逻辑或,操作。,说明:,(1),左移和右移运算可替代乘和除以,2,的,n,次方运算,,n,为移位的位数。,(2),当多个位运算符出现在同一个表达式中时,要注意它们的优先级别。,2.3,运算符和表达式,2.3.7,三目运算符,C+,中唯一的三目运算符是条件运算符,其格式如下:,?,:,“,条件表达式,”,是,C+,中可以产生,“,真,”,和,“,假,”,结果的任何表达式,如果条件表达式的结果为,“,真,”,,则执行表达式,1,,否则执行表达式,2,。例如:,nNum=(a b)?10:8;,注意,,只有在表达式,2,后面才能出现分号结束符,,“,表达式,1,”,和,“,表达式,2,”,中都不能有分号。,2.3,运算符和表达式,2.3.8,增,1,和减,1,运算符,+,和,-,既可放在变量的左边也可以出现在变量的右边,称为前缀运算符和后缀运算符。例如:,i+;或+i;(等效于i=i+1;或i+=1;),i-;或-i;(等效于i=i-1;或i-=1;),若前缀运算符和后缀运算符仅用于某个变量的增,1,和减,1,,这两都是等价的,如果将这两个运算符和其他的运算符组合在一起,在求值次序上就会产生根本的不同:,如果用前缀运算符对一个变量增,1(,减,1),,在将该变量增,1(,减,1),后,用新的值在表达式中进行其他的运算。,如果用后缀运算符对一个变量增,1(,减,1),,用该变量的原值在表达式进行其他的运算后,再将该变量增,1(,减,1),。,例如:,a=5;,b=+a-1;/,相当于,a=a+1;b=a,1;,和,a=5;,b=a+,-,1;/,相当于,b=a,1;a=a+1;,虽然它们中的,a,值的结果都是,6,,但,b,的结果却不一样,前者为,5,,后者为,4,。,2.4,基本语句,2.4.2,选择语句,条件语句,条件语句,if,具有下列形式:,if (),else ,(1),条件语句中的表达式一般为逻辑表达式或关系表达式。表达式的类型也可以是任意的数值类型(包括整型、浮点型、字符型等)。,(
展开阅读全文

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


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服