Visual C实用教程学习.pptx

上传人:一*** 文档编号:77797056 上传时间:2023-03-16 格式:PPTX 页数:412 大小:2.67MB
返回 下载 相关 举报
Visual C实用教程学习.pptx_第1页
第1页 / 共412页
Visual C实用教程学习.pptx_第2页
第2页 / 共412页
点击查看更多>>
资源描述

《Visual C实用教程学习.pptx》由会员分享,可在线阅读,更多相关《Visual C实用教程学习.pptx(412页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1.1开发环境概述界面由标题栏、菜单栏、工具栏、项目工作区窗口、文档窗口、输出窗口以及状态栏等组成,如图。图图1.2 Visual C+6.0开发环境开发环境工具栏菜单栏项目工作区窗口输出窗口文档窗口输出窗口标签标题栏状态栏第1页/共412页1.3开发环境的工具栏工具栏概述标准工具栏图图1.12 标准工具栏标准工具栏NewTextFileCutPasteRedoOutputFindinFilesSearchOpenSaveAllCopyUndoWorkspaceWindowListFind第2页/共412页1.3开发环境的工具栏类向导工具栏小型编连工具栏图图1.13 WizardBarClas

2、sFilterMembersActions图图1.14 Build MiniBarCompileStopBuildGoBuildExecuteAdd/Removebreakpoints第3页/共412页1.4项目和项目工作区还有相应的Debug或Release、Res等子文件夹。若创建的单文档应用程序项目名是Ex_Sdi,则各文件的布局如图。VC应用程序向导创建项目时,系统会自动为项目创建Win32Debug的运行程序,并使用相应的缺省配置。和Win32Release版本的区别在于:Debug版本的运行程序有相应的调试信息码,Release版本的运行程序没有,但Release版本的运行程序经过

3、代码的优化,其程序的运行速度被最大加速。注意:在开发环境中,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等第4页/共412页1.4项目和项目工作区

4、用以显示项目中的所有的类信息。假设打开的项目名为Ex_Sdi,单击项目区窗口底部的ClassView,则显示出“Ex_Sdiclasses”的树状结点,在它的前面是一个图标和一个套在方框中的符号“+”,单击符号“+”或双击图标,Ex_Sdi中的所有类名将被显示,如CMainFrame、CEx_SdiApp、CEx_SdiDoc、CEx_SdiView等(如图所示)。图图1.19 ClassView图图1.20 ResourceView图图1.21 FileView第5页/共412页1.4项目和项目工作区ResourceView包含了项目中所有资源的层次列表。每一种资源都有自己使用的图标。Fil

5、eViewFileView可将项目中的所有文件分类显示,如图。每一类文件在FileView页面中都有自己的目录项(节点)。可以在目录项中移动文件,还可以创建新的目录项以及将一些特殊类型的文件放在该目录项中。创 建 一 个 新 目 录 项,可 在 添 加 目 录 项 的 地 方 右 击,选 择“NewFolder”,如图,输入目录项名称和相关的文件扩展名,单击OK。图图1.22 “New Folder”对话框对话框第6页/共412页1.5资源资源与资源标识资源的分类(1)快捷键列表(2)工具栏按钮(3)鼠标指针(4)对话框(5)HTML(6)图标(7)菜单(8)字符串列表(9)版本信息标识符标识

6、符的命名规则:(1)在标识符名称中允许使用字母az、AZ、09以及下划线。(2)标识符名称不区分大小写字母。(3)不能以数字开头,如8BIT是不合法的标识符名。(4)字符个数不得超过247个。第7页/共412页1.5资源资源基本操作创建资源(1)从“Insert”菜单选取“Resource”;或用快捷键Ctrl+R打开对话框,如图。New用来创建一个由ResourceType 列表中指定类型的新资源,Custom按钮用来创建ResourceType 列表中没有的新类型的资源,Import按钮用于将外部已有的位图、图标、光标或其他定制的资源添加到当前应用程序中。(2)从ResourceType

7、列表中选择一种资源类型,而后按New按钮。(3)在项目工作区窗口的ResourceView页面中,看到了刚才选中的资源的缺省标识符,而且相应的资源编辑器自动打开。图图1.23 “Insert Resource”对话框对话框第8页/共412页1.5资源打开资源如果需要对已有资源进行查看或修改,可以首先切换到项目工作区窗口的ResourceView标签页,然后选中要打开的资源,双击鼠标左键或者按Enter键,这时相应的资源编辑器也会相应自动打开。删除、复制资源 如果删除一个已有的资源,可以首先切换到项目工作区窗口的ResourceView标签页,然后选中要打开的资源,按Del键或者利用Edit菜单

8、下的Delete菜单项可实现删除。复制资源的过程与删除类似,选中要打开的资源,按住Ctrl键不放,并拖动鼠标左键或利用Edit菜单中的Copy和Paste菜单命令进行操作,它同其他软件的复制过程相同。保存资源 当设计或修改好一个资源后,用File菜单的Save菜单命令或利用快捷键Ctrl+S将其保存在当前资源文件中。第9页/共412页1.5资源资源文件的管理资源文件一经创建,其中所包含的资源也就随之而定,与资源相对应的标识符也被保存在Resource.h头文件中。一般,在一个资源文件.RC中所保存的所有资源已经满足的需要了,尽管如此,VC仍然允许用多个文件来存放资源。用View菜单中的Reso

9、urceIncludes菜单命令打开“ResourceIncludes”对话框(如图1.24所示)时,可以看到Compile-timedirectives编辑框中已经含有#includeresEx_Sdi.rc2。资源编辑器所有Windows资源都可以用VC提供的资源编辑器来编辑。图图1.24 “Resource Includes”对话框对话框第10页/共412页1.6一个控制台应用程序用AppWizard创建用AppWizard创建一个控制台应用程序可按下列步骤进行:(1)选择“File”“New”菜单命令,显示出“New”对话框。(2)选择Projects标签,选中Win32Console

10、Application项。(3)在ProjectName框中键入控制台应用程序项目名称。第一次使用时最好确定该项目所在的文件夹以便于源文件的管理,既可在Location下的编辑框中直接键入文件夹名称,也可单击Browse按钮择一个已有的文件夹,如图。图图1.25 在在“New”对话框中建立对话框中建立Ex_Hello控制台应用程序控制台应用程序第11页/共412页1.6一个控制台应用程序(4)单击OK。如图。选中Asimpleapplication项。(5)单击Finish,如图,单击OK按钮系统将自动创建此应用程序。图图1.26 选择控制台应用程序类型选择控制台应用程序类型图图1.27 Ex

11、_Hello信息对话框信息对话框第12页/共412页1.6一个控制台应用程序理解程序框架 在项目工作区窗口中只能看到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产生的“真正”

12、具有实际意义的程序源代码文件,几乎所有的代码都是添加在这个文件中的。图图1.28 Ex_Hello项目工作区内容项目工作区内容第13页/共412页1.6一个控制台应用程序添加程序代码(1)单击项目工作区窗口的ClassView标签项,将显示Ex_Hello类信息。(2)单击各目录项前面的“+”号,将所有目录项展开。(3)双击main函数名,在文档窗口中显示出main函数体所在的源文件Ex_Hello.cpp,且文本光标已移至此函数名的前面。(4)键入下列代码:.#include/输入输出操作的头文件int main(int argc,char*argv)coutHello world!n;re

13、turn 0;(5)用SaveAll命令项或标准工具栏的SaveAll按钮将所有文件保存。第14页/共412页1.6一个控制台应用程序编译运行打开Build菜单,选用BuildEx_Hello.exe菜单项或按快捷键F7,系统对Ex_Hello进行编译、连接,同时在输出窗口中在线地显示出编译的内容,当出现Ex_Hello.exe-0error(s),0warning(s)字样时,表示Ex_Hello.exe可执行文件已经正确无误地生成了。在Build菜单中选取ExecuteEx_Hello.exe命令或按快捷键Ctrl+F5,就可以运行刚刚生成的Ex_Hello.exe,如图。在Ex_Hell

14、o窗口中,“Pressanykeytocontinue”是系统自动加上去的。图图1.29 Ex_Hello运行结果运行结果第15页/共412页1.7程序调试修正语法错误调试最初的任务主要是修正一些语法错误,这些错误包括:(1)未定义或不合法的标识符,如函数名、变量名和类名等。(2)数据类型或参数类型及个数不匹配。上述错误在编译后,会在Output窗口中列出所有错误项。若将光标移到Output窗口中的错误编号上,按F1键可启动MSDN并显示出错误的内容,从而帮助用户理解错误产生的原因。为了能使快速定位到错误产生的源代码位置,提供下列一些方法:(1)在Output窗口中双击某个错误,或将光标移到该

15、错误处按Enter键,则该错误被亮显,状态栏上显示出错误内容,并定位到相应的代码行中,且该代码行最前面有个蓝色箭头标志。(2)按F4键可显示下一错误,并定位到相应的源代码行。(3)在Output窗口中的某个错误项上,右击鼠标,在弹出的快捷菜单中选择“GoToError/Tag”命令。语法错误被修正后,编译时会出现类似“Ex_Hello.exe-0error(s),0warning(s)”的字样。并不是说,此项目完全没有错误,可能还有“异常”、“断言”等其他错误,而这些错误在编译时是不会显示出来的,只有当程序运行后才会出现。第16页/共412页1.7程序调试设置断点调试的断点可以有下列类型:(1

16、)位置断点、(2)数据断点、(3)条件断点。快捷方式 三种快捷方式可以设置位置断点:(1)按快捷键F9。(2)在Build工具栏上单击按钮。(3)在 需 要 设 置 断 点 的 位 置 右 击,选 择“Insert/RemoveBreakpoint”命令。图图1.30 设置的断点设置的断点断点标志断点标志程序中断的位置第17页/共412页1.7程序调试使用Breakpoints对话框(1)凡是可以使用的断点前均有选中标记()。若单击前面的复选框,则该断点被禁止。按钮Remove和RemoveAll清除当前选中的断点或全部断点。(2)在Location页面中,“Break At”文本框中可以输入

17、断点的名称。单击Edit Code可以查看断点位置处的源代码或目标代码。单击Condition,可以输入程序运行中断所需要的表达式条件,从而设置一个条件断点。(3)在Data页面中,提供了一种设置数据断点的方法,如图。在Data页面的最上面编译框中,可以键入任何有效的C/C+表达式,它可以是赋值语句,可以是条件语句,可以是单独的一个变量名。在程序运行过程中,若变量的值有所改变,或者条件表达式变成真时,则程序在该断点处中断。图图1.31 “Breakpoints”对话框对话框图图1.32 Data页面页面第18页/共412页1.7程序调试启用调试器选择“Project”菜单“Settings”命

18、令,如图。在调试程序时必须使用Debug版本。通过选择“Debuginfo”组合框来设置调试选项。含义如表。还可以在“ProjectSettings”对话框中的“Link”页面中,选中“Generatemapfile”项,使其在编连时产生相应的映射文件。选择“Build”菜单“StartDebug”子菜单的“Go”、“StepInto”或“RunToCursor”命令,就可以启动调试器了。图图1.33 “Project Settings”对话框对话框第19页/共412页1.7程序调试控制程序运行当程序开始运行在Debug状态下时,程序会由于断点而停顿下来。这时可以看到有一个小箭头,它指向即将执

19、行的代码。而且,原来的“Build”菜单就会变成“Debug”菜单,如图1.34所示。其中有四条命令StepInto、StepOver、StepOut和RuntoCursor是用来控制程序运行的,其含义是:StepOver的功能是运行当前箭头指向的代码(只运行一条代码)。StepInto的功能是如果当前箭头所指的代码是一个函数的调用,则用StepInto进入该函数进行单步执行。Step Out的功能是如果当前箭头所指向的代码是在某一函数内,用它使程序运行至函数返回处。RuntoCursor的功能是使程序运行至光标所指的代码处。第20页/共412页1.7程序调试查看和修改变量的值调试器还提供一系

20、列的窗口,用来显示各种不同的调试信息。可借助“View”菜单下的“DebugWindows”子菜单可以访问它们。当启动调试器后,VC的开发环境会自动显示出Watch和Variables两个调试窗口,且Output窗口自动切换到Debug页面,如图。图图1.34 Debug菜单菜单Watch窗口Output窗口Variables窗口第21页/共412页1.7程序调试QuickWatch窗口的使用用来帮助用户快速查看或修改某个变量或表达式的值。若仅需要快速查看变量或表达式的值,则只需要将鼠标指针直接放在该变量或表达式上,片刻后,系统会自动弹出一个小窗口显示出该变量或表达式的值。启 动 调 试 器

21、后,选 择“Debug”“QuickWatch”或 按 快 捷 键Shift+F9,如图。Expression框可以让用户键入变量名或表达式,而后按Enter键或单击Recalculate,就可以在Currentvalue列表中显示出相应的值。若想要修改其值的大小,则可按Tab键或在列表项的“Value”域中双击该值,再输入新值按Enter键就可以了。单击AddWatch按钮可将刚才输入的变量名或表达式及其值显示在“Watch”窗口中。图图1.36 “QuickWatch”窗口窗口第22页/共412页1.7程序调试Watch窗口的使用选择“View”“Debug Windows”“Watch”

22、,四个页面:Watch1、Watch2、Watch3和Watch4,在每一个页面中有要查看的变量或表达式,可以将一组变量或表达式的值显示在同一个页面中。使用Watch窗口进行操作时,要注意到下面一些技巧:(1)添加新的变量或表达式选定窗口中某个页面,在末尾的空框处,单击左边的“Name”域,输入变量或表达式,按Enter键。同时,又在末尾处出现新的空框,如图。在变量或表达式中右击,选择“Properties”查看其类型。(2)修改变量或表达式的值选中相应的变量或表达式,按Tab键或在列表项的“Value”域中双击该值,再输入新值按Enter键就可以了。(3)删除变量或表达式单击Del键可将当前

23、选定的变量或表达式删除。图图1.37 添加新的变量或表达式添加新的变量或表达式空框第23页/共412页1.7程序调试Variables窗口的使用Variables窗口能快速访问程序当前的环境中所使用的重要变量。选择“View”“Debug Windows”“Variables”,其中有三个页面:Auto页面显示出当前语句和上一条语句使用的变量,还显示使用Step Over或StepOut命令后函数的返回值。Locals页面显示出当前函数使用的局部变量。This页面显示出由This所指向的对象。Variables窗口还有一个“Context”框,从下拉列表中可以选定当前CallStack的指令,

24、以确定在页面中显示变量的范围,如图。图图1.38 “Context”框框第24页/共412页第2章基本基本C+语言语言2.1C+程序结构2.2数据类型和基本输入输出2.3运算符和表达式2.4基本语句2.5函数和预处理2.6构造类型2.7指针和引用上机训练第25页/共412页2.1C+程序结构几个C+程序例1 在屏幕上输出一个由星号形成的三角形。/输出星号的三角形阵列#include void DoDraw(int num);/声明一个全局函数void main()int num=5;/定义并初始化变量DoDraw(num);/函数的调用void DoDraw(int num)/函数的定义for

25、(int i=0;inum;i+)/循环语句for(int j=0;j=i;j+)cout*;coutn;第26页/共412页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;CDrawAr

26、ray myDraw;/定义类的一个对象myDraw.DoDraw(num);/调用此对象的成员函数第27页/共412页2.1C+程序结构C+程序的基本组成C+程序往往由预处理命令、语句、函数、变量和对象、输入与输出以及注释等几个基本部分组成的。(1)预处理命令在程序的一开始出现含有以“#”开头的命令,它们是预处理命令。三类预处理命令:宏定义命令、文件包含命令和条件编译命令。(2)语句可以是用来判断的条件语句,可以是用来反复运行的循环语句等。(3)函数一个程序由若干个函数组成。有的是系统中所提供的库函数,有的是根据自己需要自己编制设计的函数。程序中必须有一个且只能有一个主函数main。(4)变

27、量和对象变量的类型有整型(int)、字符型(char)以及浮点型(float)等。对象通常 是 指“类”的 实 例(具 有 该“类”类 型 的 变 量),如 myDraw是 类CDrawArray的对象。(5)输入与输出使用输入与输出可以要求键入一些数值或把计算的结果显示在屏幕上。(6)注释程序的目的不仅在于实现某种功能、解决某个问题,而且还在于数据结构和算法的交流。注释能提高程序的可读性,帮助用户对程序的理解。第28页/共412页2.1C+程序结构C+程序的书写风格标识符命名用来标识变量名、函数名、数组名、类名、对象名、类型名、文件名等的有效字符序列。标识符命名的好坏也会影响程序的可读性,命

28、名时注意:(1)合法性标识符由大小写字母、数字字符(09)和下划线组成,第一个字符必须为字母或下划线。任何标识符中都不能有空格、标点符号及其他字符。注意,标识符的大小写是有区别的。用户定义的标识符不能和系统的关键字同名。(2)有效性标识符的长度(组成标识符的字符个数)是任意的,最好不超过32个,因为有的编译系统只能识别前32个字符,也就是说前32个字符相同的两个不同标识符被有的系统认为是同一个标识符。(3)易读性在定义标识符时,若能做到“见名知意”就可以达到易读性的目的。第29页/共412页2.1C+程序结构缩进和注释缩进是指程序在书写时不要将程序的每一行都由第一列开始,在适当的地方加进一些空

29、行或空格。它同注释一样,也是为了提高程序的可读性。注释要注意的是:(1)注释应在编程的过程中同时进行,不要指望程序开发完成后再补写注释。那样只会多花好几倍的时间,更为严重的是,时间长了以后甚至会读不懂自己写的程序。(2)必要的注释内容应包含:源程序的总体注释(文件名、作用、创建时间、版本、作者及引用的手册、运行环境等)、函数注释(目的、算法、使用的参数和返回值的含义、对环境的一些假设等)及其他的少量注释。千万不要陈述那些一目了然的内容,否则会使注释的效果适得其反。第30页/共412页2.2数据类型和基本输入输出基本数据类型使用基本数据类型时需要注意:(1)无符号和有符号的区别在于数值最高位的含

30、义。对signed类型,最高位是符号位,其余各位表示数值大小;unsigned类型的各个位都用来表示数值大小;相同基本数据类型的signed和unsigned的数值范围是不同。(2)char、short、int和long可统称为整型。缺省时,char、short、int和long本身是有符号(signed)的。第31页/共412页2.2数据类型和基本输入输出常量整型常量(1)十进制整型常量:即十进制整数,如34、128等。(2)八进制整型常量:以0开头的数,由0至7的数字组成。(3)十六进制整型常量:以0 x或0X开头的数,由0至9、A至F或a至f组成。需要注意的是:整型常量中的长整型(lon

31、g)要以L或小写字母l作为结尾。整型常量中的无符号型(unsigned)要以U或u作为结尾。浮点型常量(1)十进制数形式:由整数部分和小数部分组成。(2)指数形式:采用科学表示法,能表示出很大或很小的浮点数。若浮点型常量是以F(或f)结尾的,则表示单精度类型(float),以L(或小写字母l)结尾的,表示长双精度类型(longdouble)。若一个浮点型常量没有任何说明,表示双精度类型(double)。第32页/共412页2.2数据类型和基本输入输出字符常量字符常量是用单引号括起来的一个字符。第33页/共412页2.2数据类型和基本输入输出字符串常量字符串常量是一对双引号括起来的字符序列。可以

32、包含空格、转义序列符或其他字符。由于双引号是字符串的分界符,因此如果需要在字符串中出现双引号则必须用“”表示。例如:“Please press”F1”to help!”这个字符串被解释为:Please press“F1”to help!字符串常量必须在同一行书写,若一行写不下,则需要用来连接,不要将字符常量和字符串常量混淆不清,它们主要的区别如下:(1)字符常量用单引号括起来,占一个字节;字符串常量是用双引号括起来,至少占用两个字节。例如a是字符常量,占有的一个字节用来存放字符a的ASCII码值,而“a”是字符串常量,它的长度不是1而是2,除了字符a之外,它的末尾还有个0字符。每个字符串的末尾

33、都有一个这样的字符。(2)字符常量实际上是整型常量的特殊形式,它可以参与常用的算术运算;而字符串常量则不能。例如:int b=a+3;/结果b为100,这是因为将a的ASCII码值97参与运算第34页/共412页2.2数据类型和基本输入输出符号常量例Ex_PI1 用#define定义符号常量。#include#define PI 3.14159void main()double r=100.0,area;area=PI*r*r;cout圆的面积是:area n;第35页/共412页2.2数据类型和基本输入输出变量变量的定义定义变量是用下面的格式语句进行定义的:;需要说明的是:(1)在同一个程序

34、块中,不能有两个相同的变量名。(2)没有字符串变量类型,字符串是用字符类型的数组或指针来定义的。(3)与其他语言相比,C+变量的定义比较自由。变量的初始化程序中常需要对一些变量预先设置初值,这一过程称为初始化。可以在定义变量时同时使变量初始化,也可以在多个变量的定义语句中单独对某个变量初始化。需要注意的是,一个未初始化的变量不是没有数值,而是取决于变量在系统中的存储形式,它可能是系统的缺省值或无效值。第36页/共412页2.2数据类型和基本输入输出基本输入输出输出流(cout)通过cout可以输出一个整数、实数、字符及字符串,cout中的插入符“.其中,提取符“”可以连续写多个,每个后面跟一个

35、表达式,该表达式通常是获得输入值的变量或对象。第37页/共412页2.3运算符和表达式算术运算符算术运算符如下所示:+(正号运算符,如+4,+1.23等)-(负号运算符,如-4,-1.23等)/(除法运算符,如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

36、)求余运算 求余运算要求参与运算的两个操作数都是整型,结果是两个数相除的余数。例如40%5的结果是0,40%11的结果是7。要理解负值的求余运算,例如40%-11结果是7,-40%11结果是-7,-40%-11结果也是-7。第38页/共412页2.3运算符和表达式(3)优先级和结合性 将表达式的求值中多种运算之间的先后关系(即运算符之间的优先关系)用运算符的优先级表示,优先级的数值越小优先级越高。在算术运算符中,单目运算符的优先级最高,其次是乘、除和求余,最后是加减。优先级相同的运算符,则按它们的结合性进行处理。运算符的结合性是指运算符和操作数的结合方式,有“从左至右”和“从右至左”。“从左至

37、右的结合”指运算符左边的操作数先与运算符相结合,再与运算符右边的操作数进行运算;自右至左的结合次序是将运算符右边的操作数先与运算符相结合。在算术运算符中,除单目运算符外,其余运算符的结合性都是从左至右的。(4)关于书写格式 在使用运算符进行数值运算时,若书写时没有在双目运算符两边加上空格,则有时编译系统会做出与自己想象中不同的理解。书写时,有时有意识地加上一些括号。这样不仅增强程序的可读性,而且,尤其当对优先关系犹豫时,加上括号是保证正确结果的最好方法。(5)溢出处理某数除以0或当其它浮点溢出时,编译系统将报告错误并终止程序运行。但对整数溢出,系统却不认为是一个错误。第39页/共412页2.3

38、运算符和表达式赋值运算符复合赋值10种复合赋值运算符:+=,-=,*=,/=,%=,=,|=,=,=注意:(1)在复合赋值运算符之间不能有空格,例如+=不能写成+=。(2)所有运算符高于逗号运算符,复合赋值运算符的结合性是从右至左的。多重赋值指在一个赋值表达式中出现两个或更多的赋值符(“=”),例如:nNum1=nNum2=nNum3=100;赋值符的结合性是从右至左,上述赋值的过程:首先对nNum3=100求值,将100赋值给nNum3,同时该赋值表达式取得值100;然后将该值赋给nNum2,该赋值表达式也取得值100;最后将100赋给nNum1。第40页/共412页2.3运算符和表达式数据

39、类型转换自动转换将数据类型从低到高进行转换,例如: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)长整型(

40、long)无符号长整型(unsignedlong)双精度浮点型(double)短整型,字符型(short,char)单精度浮点型(float)图2.1类型转换的顺序第41页/共412页2.3运算符和表达式关系运算符是比较两个操作数是否符合给定的条件。若符合条件,则关系表达式的值为“真”,否则为“假”。在编译系统中,往往将“真”表示为“true”或1,将“假”表示为“false”或0。而任何不为0的数被认为是“真”,0被认为是“假”。由于关系运算需要两个操作数,所以关系运算符都是双目运算符。提供了6种关系运算符:(小于),(大于),=(大于等于),=(相等于),!=(不等于)其中,前4种的优先级

41、相同且高于后面的两种。例如:a=b c等效于a=(b c)但关系运算符的优先级低于算术运算符(其他可参见表2.6)。例如:a=bc等效于a=(bc)第42页/共412页2.3运算符和表达式逻辑运算符将多个关系表达式或逻辑量组成一个逻辑表达式。提供了3种逻辑运算符:!逻辑非(单目):指将“真”变“假”,“假”变“真”。&逻辑与(双目):指两个操作数都是“真”时,结果为“真”,否则为“假”。|逻辑或(双目):指两个操作数中有一个是“真”时,结果为“真”,只有它们都为“假”时,结果才为“假”。“逻辑非”、“逻辑与”和“逻辑或”的优先级依次从高到低,且“逻辑非”的优先级还比算术运算符和关系运算符高,而

42、“逻辑与”和“逻辑或”的优先级却比关系运算符要低。例如:0|2 4-!0表达式的运算过程是这样的:(1)进行“!0”的运算,结果为1(“真”)。(2)进行“8 4-1”的运算,即“8 3”,结果为0(“假”)。(3)进行“0|0”的运算,结果为0(“假”)。表达式的值为0。第43页/共412页2.3运算符和表达式位运算符是对操作数按其在计算机内表示的二制数逐位地进行逻辑运算或移位运算,参与运算的操作数只能是整型常量或变量。提供了六种位运算符:(按位求反,单目运算符):将一个二进制数的每一位求反,即0变成1,1变成0。(右移,双目运算符):将左操作数的二进制值向右移动指定的位数,右移后,移出的低

43、位舍弃。无符号数高位补0;有符号数高位补符号位。&(按位与,双目运算符):将两个操作数对应的二进制位进行逻辑与操作。(按位异或,双目运算符):将两个操作数对应的二进制位进行异或操作。|(按位或,双目运算符):将两个操作数对应的二进制位进行逻辑或操作。说明:(1)左移和右移运算可替代乘和除以2的n次方运算,n为移位的位数。(2)当多个位运算符出现在同一个表达式中时,要注意它们的优先级别。第44页/共412页2.3运算符和表达式三目运算符C+中唯一的三目运算符是条件运算符,其格式如下:?:“条件表达式”是C+中可以产生“真”和“假”结果的任何表达式,如果条件表达式的结果为“真”,则执行表达式1,否

44、则执行表达式2。例如:nNum=(a b)?10:8;注意,只有在表达式2后面才能出现分号结束符,“表达式1”和“表达式2”中都不能有分号。第45页/共412页2.3运算符和表达式增1和减1运算符+和-既可放在变量的左边也可以出现在变量的右边,称为前缀运算符和后缀运算符。例如:i+;或+i;(等效于i=i+1;或i+=1;)i-;或-i;(等效于i=i-1;或i-=1;)若前缀运算符和后缀运算符仅用于某个变量的增1和减1,这两都是等价的,如果将这两个运算符和其他的运算符组合在一起,在求值次序上就会产生根本的不同:如果用前缀运算符对一个变量增1(减1),在将该变量增1(减1)后,用新的值在表达式

45、中进行其他的运算。如果用后缀运算符对一个变量增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。第46页/共412页2.4基本语句选择语句条件语句条件语句if具有下列形式:if ()else (1)条件语句中的表达式一般为逻辑表达式或关系表达式。表达式的类型也可以是任意的数值类型(包括整型、浮点型、字符型等)。(2)适当添加花括号(“”)来增加程序的可读性。(3)条件语句中的语句1

46、和语句2也可是if条件语句,这就形成了if语句的嵌套。(4)else总是和其前面最近的if配套的。第47页/共412页2.4基本语句开关语句具有下列形式:switch ()case :语句1case :语句2.case :语句n default:语句n+1 注意:(1)switch后面的表达式可以是整型、字符型或枚举型的表达式,而case后面的常量表达式的类型必须与其匹配。(2)多个case可以共有一组执行语句。(3)若同一个case后面的语句是复合语句,即有两条或两条以上的语句,则这些语句可以不用花括号(“”)括起来。(4)由于case语句起标号作用,因此每一个case常量表达式的值必须互不

47、相同,否则会出现编译错误。第48页/共412页2.4基本语句循环语句while循环语句while循环语句具有下列形式:while()do.while循环语句do.while循环语句具有下列形式:do while()for循环语句for循环语句具有下列形式:for(表达式1;表达式2;表达式3)(1)表达式1、表达式2、表达式3都可以省略,但分号“;”不能省略。(2)表达式1和表达3可以是一个简单的表达式,也可以是逗号表达式,即包含两个或两个以上的简单表达式,中间用逗号分隔。(3)由于循环体是由任何类型的语句组成的,因此在循环体内还可以包含前面的几种循环语句,这样就形成了循环的嵌套。第49页/共

48、412页2.4基本语句break和continue语句若需跳出循环结构或重新开始循环,就得使用break和continue语句,格式:break;从一个循环体跳出,即提前终止循环,也可以跳出switch结构。continue;用于那些依靠条件判断而进行循环的循环语句。对于for语句来说,目的是将流程转到for语句的表达2和表达式3。例如:例Ex_Continue 把1100之间的不能被7整除的数输出。#include void main()for(int nNum=1;nNum=100;nNum+)if(nNum%7=0)continue;coutnNum ;coutn;当nNum能被7整除时

49、,执行continue语句,流程转到for语句中的nNum=100;nNum+,并根据表达式nNum=100的值来决定是否再做循环。而当nNum不能被7整除时,才执行coutnNum”语句。第50页/共412页2.5函数和预处理函数的定义和调用函数的定义定义一个函数的格式如下:()函数体函数类型决定了函数所需要的返回值类型。函数名后面必须跟一对圆括号“()”,以区别于变量名及其他用户定义的标识名。函数的形式参数写在括号内,参数表中参数个数可以是0,一个或多个参数,圆括号不能省略。函数体由在一对花括号中的若干条语句组成,用于实现这个函数执行的动作。函数的声明声明一个函数可按下列格式进行:();i

50、nt sum(int x,int y);和 int sum(int,int);是等价的。第51页/共412页2.5函数和预处理函数的调用函数调用的一般形式为:();所谓“实际参数”(简称“实参”),它与“形参”相对应,是实际调用函数时所给定的常量、变量或表达式,且必须有确定的值。例如:int a5=7,9,6,3,4;sum(a0,6);或sum(a0*a1,a2+a3);等都是合法的调用。需要注意的是:实参与形参的个数应相等,类型应一致,且按顺序对应,一一传递数据。C+中,调用一个函数的方式可以有很多,例如:sum(3,4);/Aint c=2*sum(4,5);/Bc=sum(c,sum(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理工具

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁