C++基础教程学习.pdf

上传人:文*** 文档编号:90591142 上传时间:2023-05-16 格式:PDF 页数:174 大小:20.87MB
返回 下载 相关 举报
C++基础教程学习.pdf_第1页
第1页 / 共174页
C++基础教程学习.pdf_第2页
第2页 / 共174页
点击查看更多>>
资源描述

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

1、O+基础教程Beta版原 作:Juan Soulie 翻译:Jing Xu(aqua)英文原版本教程根据Juan Soulie的英文版O-+教程翻译并改编。本版为最新校对版,尚未定稿。如有不明或错误之处,请参考英文原版,并敬请在本站留言指正。版权归作者所有,欢迎链接,请勿转载。本教程对C+语言进行了深入浅出的介绍,从基础知识到A N S I+标准的最新功能,内容涵盖了从数组,类等基本概念到多态、模板等高级概念。教程本着实用的原则,每一小节都结合了可以工作的程序实例,以便读者从第一课开始就可以上手实习。本翻译版本对许多a+概念中的关键词保留了中英文对照,以便读者增强理解,并方便日后阅读英文原版教

2、材目录1.简介怎样使用本教程2.O +基础Basics of C+1.a+程序结构Structure of a program2.变量和数据类型Variables and Data types3.常量Constants4.操作符/运算符Operators5.控制台交互Communication through console3.控制结构和函数Control structures and Functions1.控制结构Control Structures2.函数IFunctions I3.函数IIFunctions II4.高级数据类型Advanced Data1.数组Arrays2.字符序列C

3、haracter Sequences3.指针Pointers4.动态内存分配Dynamic memory5.数据结构Data Structures6.自定义数据类型User defined data types5.面向对象编程Object-oriented Programming1.类,构造函数和析构函数,类的指针Qasses.Constructors and Destructors.Pointers to classes.2.操作符重载,this,静态成员Overloading Operators,this.Static members3.类之间的关系Relationships betwee

4、n classes:friend.Inheritance4.虚拟成员,抽象,多态Virtual Members.Abstraction.Polymorphism6.C+局)级Advanced concepts1.模板Templates2.名空间Namespaces3.出错处理Exception handling4.类型转换高级Advacned Class Type-casting5.预处理指令Preprocessor Directives7.J+标准函数库O+Standard Library1.文件的输入输出Input/Output with files0+基础教程简介怎样使用本教程读者范围本

5、教程面向所有希望学习J+语言的读者。如果读者有其他编程语言背景或计算机相关基本知识可以帮助更好的理解教程内容,但这并非必须条件。对于C语言熟悉的读者可将前三章(1.1到3.4)当作复习,因为这部分内容主要介绍0+中的C部分。不过某些O-+的语法与C还是有些差别,所以建议还是快速的读一下这部分。第四章讲述面向对象编程。第五章主要介绍A N S I+标准中的新增的功能。本教程结构教程共分6章,每章分若干小节。你可以直接从主目录进入任意小节,并循每页底部的链接向后浏览。很多小节含有一页例题介绍该章节主要知识点的使用。建议在进入下一章学习之前最好先阅读这些例题,理解每行代码。学习和练习一种编程语言的最

6、好办法是自己修改书中例题程序,设法在程序中增加新的功能。不要不敢修改这些例题程序,这正是学习的方法。兼容性备注ANSI-O+标准近几年来被接受为国际标准。尽管a +语言从二十世纪80年代即存在,ANSI-a+在1997年才被发表,2003年又被修订过。因此很多编译器不支持A N S I+中的部分新功能,特别是那些在此标准发表前即被发布的编译器。在本教程中,那些ANSI-a+中新增的而老T 弋a+编译器大多不支持概念将备用如下标志标出:ANSI a+新增的概念同样对于C和C+在实现上有明显不同的概念,将备用如下标志标出:c与a+不同的地方编译器本教程中所有例题程序均为console程序(控制台程

7、序)。此类程序以文本形式与用户交换信息,显H结果。所有J+编译器均支持console程序的编译。要了解更多关于如何编译的说明,请查询你的编译器用户使用手册。a+编译器和开发环境推荐很多读者询问编译器和开发环境的问题。除了常用的商用收费的MS Visual Studio,VC+,Borland C+等工具外,还有很多免费的工具也是很好用的。这里推荐两种免费的J+开发软件:1、Eclipse 的 CDT开发工具,官方网站在 http:/www.eclipse.org/cdt/2、开源工具 Dev-O-+和 wxDev-O+第一章 O+基础知识(Basics of O+)1 -CH-+程序结构Str

8、ucture of a program2.变量和数据类型Variables and Data types3.常量Constants4.操作符/运算符Operators5.控制台交互Communication through console1.1 C+不辨结构(Structure of a program)下面我们从一个最简单的程序入手看一个a+程序的组成结构。/my first program in O +#include using namespace std;int main()cout Hello World!;return 0;)Hello World!上面左侧显示了我们的第一个程序的

9、源代码,代码文件名称为hellowworld.cpp.右边显示了程序被编译执行后的输出结果。编辑和编译一个程序的方法取决于你用的是什么编译器,根据它是否有图形化的界面及版本的不同,编译方法也有可能不同,具体请参照你所使用的编译器的使用说明。以上程序是多数初学者学会写的第一个程序,它的运行结果是在屏幕上打出Hell。W orld!这句话。虽然它可能是O +可写出的最简单的程序之一,但其中已经包含了每一个a +程序的基本组成结构。下面我们就逐个分析其组成结构的每一部分:/my first program in G+-+这是注释行。所有以两个斜线符号)开始的程序行都被认为是注释行,这些注释行是程序员

10、写在程序源代码内,用来对程序作简单解释或描述的,对程序本身的运行不会产生影响。在本例中,这行注释对本程序是什么做了一个简要的描述。#include 以#标志开始的句子是预处理器的指示语句。它们不是可执行代码,只是对编译器作出指示。在本例中这个句子#include 告诉编译器的预处理器将输入输出流的标准头文件(iostream.h)包括在本程序中。这个头文件包括了 J+中定义的基本标准输入-输出程序库的声明。此处它被包括进来是因为在本程序的后面部分中将用到它的功能。using namespace std;J+标准函数库的所有元素都被声明在一个名空间中,这就是std名空间。因此为了能够访问它的功能

11、,我们用这条语句来表达我们将使用标准名空间中定义的元素。这条语句在使用标准函数库的J+程序中频繁出现,本教程中大部分代码例子中也将用到它。int main()这一行为主函数(main function)的起始声明。main function是所有J +程序的运行的起始点。不管它是在代码的开头,结尾还是中间-此函数中的代码总是在程序开始运行时第一个被执行。并且,由于同样的原因,所有J+程序都必须有一个mainfunction,main后面跟了一对圆括号(),表示它是一个函数。0+中所有函数都跟有一对圆括号(),括号中可以有一些输入参数。如例题中显示,主函数(main function)的内容紧跟

12、在它的声明之后,由花括号()括起来。cout 1 1 Hei low World!;这个语句在本程序中最重要。cout是a+中的标准输出流(通常为控制台,即屏幕),这句话把一串字符串(本例中为Hello W o rld)插入输出流(控制台输出)中。cout在的声明在头文件iostream.h中,所以要想使用cout必须将该头文件包括在程序开始处。注意这个句子以分号结尾。分号标示了一个语句的结束,J +的每一个语句都必须以分号结尾。(6+程序员最常犯的错误之一就是忘记在语句末尾写上分号)。return 0;返回语句(return)引起主函数main()执行结束,并将该语句后面所跟代码(在本例中为

13、0)返回。这是在程序执行没有出现任何错误的情况下最常见的程序结束方式。在后面的例子中你会看到所有C+程序都以类似的语句结束。你可能注意到并不是程序中的所有的行都会被执行。程序中可以有注释行(以/开头),有编译器预处理器的指示行(以#开头),然后有函数的声明(本例中main函数),最后是程序语句(例如调用c o u t ),最后这些语句行全部被括在主函数的花括号()内。本例中程序被写在不同的行中以方便阅读。其实这并不是必须的。例 如,以下程序int main()(cout Hello Worldreturn 0;)也可以被写成:int main()cout Hello World return

14、0;以上两段程序是完全相同的。在J +中,语句的分隔是以分号(;)为分隔符的。分行写代码只是为了更方便人阅读。以下程序包含更多的语句:/my second program in C+#include int main()cout Hello World!cout Im a C+-+program;return 0;Hello World!Im a O-+program在这个例子中,我们在两个不同的语句中调用了 cout 函数两次。再一次说明分行写程序代码只是为了我们阅读方便,因为这个m ain函数也可以被写为以下形式而没有任何问题:int main()cout Hello World!cout

15、 Im to C+program return 0;为方便起见,我们也可以把代码分为更多的行来写:int main()(cout Hello World!;cout Im a C+program;return 0;它的运行结果将和上面的例子完全一样。这个规则对预处理器指示行(以#号开始的行)并不适用,因为它们并不是真正的语句。它们由预处理器读取并忽略,并不会生成任何代码。因此他们每一个必须单独成行,末尾不需要分号(;)注释(Comments)注释(comments)是源代码的一部分,但它们会被编译器忽略.它们不会生成任何执行代码。使用注释的目的只是使程序员可以在源程序中插入一些说明解释性的内容

16、。a+支持两中插入注释的方法:/line comment/*block comment*/第一种方法为行注释,它告诉编译器忽略从开始至本行结束的任何内容。第二种为块注释(段注释),告诉编译器忽略在/*符号和*/符号之间的所有内容,可能包含多行内容。在以下我们的第二个程序中,我们插入了更多的注释。/*my second program in C+with more comments*/#include int main()(cout Hello World!/says Hello World!cout Im a C+program;/says Im a C+-+programreturn 0;H

17、ello World!Im a O+program如果你在源程序中插入了注释而没有用符号或/*和*/符号,编译器会把它们当成J+的语句,那么在编译时就会出现一个或多个错误信息。1.2 变量和数据类型(Variables and Data types)你可能觉得这个Hellow W orld程序用处不大。我们写了好几行代码,编译,然后执行生成的程序只是为了在屏幕上看到一句话。的确,我们直接在屏幕上打出这句话会更快。但是编程并不仅限于在屏幕上打出文字这么简单的工作。为了能够进一步写出可以执行更有用的任务的程序,我们需要引入变量(variable)这个的概念。让我们设想这样一个例子,我要求你在脑子里

18、记住5这个数字,然后再记住2这个数字。你已经存储了两个数值在你的记忆里。现在我要求你在我说的第一个数值上加1 ,你应该保留6(即5+1)和2在你的记忆里。现在如果我们将两数相减可以得到结果4。所有这些你在脑子里做的事情与计算机用两个变量可以做的事情非常相似。同样的处理过程用J+来表示可以写成下面一段代码:a=5;b=2;a=a+1;result=a-b;很明显这是一个很简单的例子,因为我们只用了两个小的整数数值。但是想一想你的电脑可以同时存储成千上万这样的数值,并进行复杂的数学运算。因 此,我们可以将变量(variable)定义为内存的一部分,用以存储一个确定的值。每一个变量(variable

19、)需要一个标识,以便将它与其他变量相区别,例 如,在前面的代码 中,变量标识是a,b,和 result0我们可以给变量起任何名字,只要它们是有效的标识符。标 识(Identifiers)有效标识由字母(letter),数字(dig让 s)和 下 划 线(_)组成。标识的长度没有限制,但是有些编译器只取前32个 字 符(剩下的字符会被忽略)。空格(spaces),标点(punctuation marks)和符号(symbols)都不可以出现在标识中。只有字母(letters),数字(dig让 s)和下划线。是合法的。并且变量标识必须以字母开头。标识也可能以下划线(一)开头,但这种标识通常是保留给

20、为外部连接用的。标识不可以以数字开头。必须注意的另一条规则是当你给变量起名字时不可以和U +语言的关键字或你所使用的编译器的特殊关键字同名,因为这样与这些关键字产生混淆。例 如,以下列出标准保留关键字,他们不允许被用作变量标识名称:asm,auto,bool,break,case,catch,char,class,const,const_cast,continue,default,delete,do,double,dynamic_cast,else,enum,explicit,extern,false,float,for,friend,goto,if,inline,int,long,mutab

21、le,namespace,new,operator,private,protected,public,register,reinterpret_cast,return,short,signed,sizeof,static,static_cast,struct,switch,template,this,throw,true,try,typedef,typeid,typename,union,unsigned,using,virtual,void,volatile,wchar_t,while另 外,不要使用一些操作符的替代表示作为变量标识,因为在某些环境中它们可能被用作保留词:and,and_eq

22、,bitand,bitor,compl,not,not_eq,or,or_eq,xor,xor eq你的编译器还可能包含一些特殊保留词,例如许多生成16位码的编译器(比如一些DOS编译器)把far,huge和near也作为关键字。非常重要:J+语 言 是 大小写敏感(case sensitive-)的,即同样的名字字母大小写不同代表不同的变量标识。因此,例如变量RESULT,变量result和变量Result分别表示三个不同的变量标识.基本数据类型(Fundamental Data types)编程时我们将变量存储在计算机的内存中,但是计算机要知道我们要用这些变量存储什么样的值,因为一个简单的

23、数值,一个字符,或一个巨大的数值在内存所占用的空间是不一样的。计算机的内存是以字节(byte)为单位组织的。一个字节(byte)是我们在C+中能够操作的最小的内存单位。一个字节(byte)可以存储相对较小数据:一个单个的字符或一个小整数(通常为一个0到255之间的整数)。但是计算机可以同时操作处理由多个字节组成复杂数据类型,比如长整数(long integers)和小数(decimals)。以下列表总结了现有的a +基本数据类型,以及每一类型所能存储的数据范围:数据类型(DATA TYPES)名 称 字节数*描 述 范 围*char 1 字符(character)或整数(integer),8

24、位(bits)长 有符号(signed):-128 到 127无符号(unsigned):0 到 255short int(short)2 短整数(integer)16 位(bits)长 有符号(signed):-32768 到 32767无符号(unsigned):0 至!65535long int(long)4 长整数(integer)32位(bits)长 有符号(signed)2147483648 到 2147483647无符号(unsigned):0 到 4294967295int 4 整数(integer)有符号(signed):-2147483648 到 2147483647无符号

25、(unsigned):0 至I4294967295float 4 浮点数(floating point number)3.4e+/-38(7 个数字(7digits)double 8 双精度浮点数(double precision floating point number)1.7e+/-308(15 digits)long double 8 长双精度浮点数(long double precision floating pointnumber)1.7e+/-308(15 digits)bool 1 布尔Boolean值。它只能是真(true)或假(false)两值之一。true或falsewc

26、har_t 2 宽字符(Wide character)0这是为存储两字节(2 bytes)长的国际字符而设计的类型。一个宽字符(1 wide characters)*字节数一列和范围一列可能根据程序编译和运行的系统不同而有所不同。这里列出的数值是多数32位系统的常用数据。对于其他系统,通常的说法是整型(int)具有根据系统结构建议的自然长度(即一个字one word的长度),而 4 中整型数据char,short,int,long的长度必须是递增的,也就是说按顺序每一类型必须大于等于其前面一个类型的长度。同样的规则也适用于浮点数类型float,double和 long double,也是按递增

27、顺序。除以上列出的基本数据类型外,还有指针(pointer)和 void参数表示类型,我们将在后面看到。变量的声明(Declaration of variables)在 6+中要使用一个变量必须先声明(declare)该变量的数据类型。声明一个新变量的语法是写出数据类型标识符(例如int,short,float.)后面跟一个有效的变量标识名称。例如:int a;float mynumber;以上两个均为有效的变量声明(variable declaration)。第一个声明一个标识为a 的整型变量(int variable),第二个声明一个标识为mynumber的浮点型变量(floatvaria

28、ble).声明之后,我们就可以在后面的程序中使用变量a和 mynumber 了。如果你需要声明多个同一类型的变量,你可以将它们缩写在同一行声明中,在标识之间用逗号(comma)分隔。例 如:int a,b,c;以上语句同时定义了 a、b、c 3个整型变量,它与下面的写法完全等同:int a;int b;int c;整型数据类型(char,short,long和in t)可以是有符号的(signed)或无符号的(unsigned),这取决于我们需要表示的数据范围。有符号类型(signed)可以表示正数和负数,而无符号类型(unsigned)只能表示正数和0。在定义一个整型数据变量时可以在数据类型

29、前面加关键字signed或unsigned来声明数据的符号类型。例 如:unsigned short NumberOfSons;signed int My Account Balance;如果我们没有特别写出signed或unsigned,变量默认为signed,因此以上第二个声明我们也可以写成:int MyAccountBalance;因为以上两种表示方式意义完全一样,因此我们在源程序通常省略关键字signed。唯一的例外是字符型(char)变量,这种变量独立存在,与signed char和unsignedchar型均不相同。short和long可以被单独用来表示整型基本数据类型,short

30、相当于short int,long相当于long into也就是说short year;和short int year;两种声明是等价的。最后,signed和unsigned也可以被单独用来表示简单类型,意思分别同signed in t和unsigned in t相同,即以下两种声明互相等同:unsigned MyBirthYear;unsigned int MyBirthYear;下面我们就用a +代码来解决在这一节开头提到的记忆问题,来看一下变量定义是如何在程序中起作用的。/operating with variables#include using namespace std;int m

31、ain()/declaring variables:int a,b;int result;/process:a=5;b=2;a=a+1;result=a-b;/print out the result:cout result;/terminate the program:return 0;4如果以上程序中变量声明部分有你不熟悉的地方,不用担心,我们在后面的章节中很快会学到这些内容。变量的范围(Scope of variables)所有我们要使用的变量都必须事先声明过。C和C+语言的一个重要区别是,在O +语言中我们可以在源程序中任何地方声明变量,甚至可以在两个可执行(excutable)语句的

32、中间声明变量,而不象在C语言中变量声明只能在程序的开头部分。然而,我们还是建议在一定程度上遵循C语言的习惯来声明变量,因为将变量声明放在一处对debug程序有好处。因此,传统的C语言方式的变量声明就是把变量声明放在每一个函数(function)的开头(对本地变量local variable)或直接放在程序开头所有函数(function)的外面(对全局变量global variable)o一个变量可以是本地(local)范围内有效,叫做本地变量,也可以是全局(global)范围内有效,叫做全局变量。全局变量要定义在一个源码文件的主体中,所有函数(包括主函数 main。)之外。而本地变量定义在一个

33、函数甚至只是一个语句块单元中。如下图所示:全局变量Global variables可以在程序中任何地方任何函数(function)中被引用,只要是在变量的声明之后。本地变量local variables的作用范围被局限在声明它的程序范围内。如果它们是在f函数的开头被声明的(例如main函数),它们的作用范围就是整个main函数。在左图的例子中,这就意味着如果在main函数外还另有一个函数,main函数中声明的本地变量(Age,ANumber,AnotherOne)不能够被另一个函数使用,反之亦然。在 J +中,本地变量(local variable)的作用范围被定义在声明它的程序块内(一个程序

34、块是被一对花括号(curly brackets)括起来的一组语句)。如果变量是在一个函数(function)中被声明的,那么它是一个函数范围内的变量,如果变量是在一个循环中(loop)中被声明的,那么它的作用范围只是在这个循环(loop)之 中,以此类推。除本地和全局范围外,还有一种外部范围,它使得一个变量不仅在同一源程序文件中可见,而且在其他所有将被链接在一起的源文件中均可见。变量初始化(Initialization of variables)当一个本地变量(local variable)被声明时,它的值默认为未定(undetermined)。但你可能希望在声明变量的同时赋给它一个具体的值。

35、要想达到这个目的,需要对变量进行初始化。6+中有两种初始化方法:第一种,又叫做类C(c-like)方法,是在声明变量的时候加上一个等于号,并在后面跟上想要的数值:type identifier=initial_value;例如,如果我们想声明一个叫做a的 int变量并同时赋予它0这个值,我们可以这样写:int a=0;另外一种变量初始化的方法,又叫做构造函数(constructor)初始化,是将初始值用小括号(parenthesis()括起来:type identifier(initial_value);例 如:int a(0);在a+.中以上两种方法都正确并且两者等同。/变量初始化#incl

36、ude using namespace std;int main()inta=5;初始值为5int b(2);初始值为2int result;/不确定初始值a=a+3;result=a-b;cout result;return 0;6字 符 串(strings)字符串是用来存储一个以上字符的非数字值的变量。J+提供一个string类来支持字符串的操作,它不是一个基本的数据类型,但是在一般的使用中与基本数据类型非常相似。与普通数据类型不同的一点是,要想声明和使用字符串类型的变量,需要引用头文件,并且使用using namespace语句来使用标准名空间(std),如下面例子所示:/a+字符串例题

37、#include#include using namespace std;int main()(string mystring=This is a string;cout mystring;return 0;This is a string如上面例子所示,字符串变量可以被初始化为任何字符串值,就像数字类型变量可以被初始化为任何数字值一样。以下两种初始化格式对字符串变量都是可以使用的:string mystring=This is a string;string mystring(This is a string);字符串变量还可以进行其他与基本数据类型变量一样的操作,比如声明的时候不指定初始值

38、,和在运行过程中被重新赋值。/a +字符串例题2#include#include using namespace std;int main()string mystring;mystring=This is the initial string content;cout mystring endl;mystring=This is a different string content;cout mystring endl;return 0;This is the initial string contentThis is a different string content要了解更加详细的J+

39、字符串操作,建议参考Cplusplus上的string类referenceo1.3 常 量(Constants)一个常量(constant)是一个有固定值的表达式。字(Literals)字是用来在程序源码中表达特定的值。在前面的内容中我们已经用了很多的字来给变量赋予特定的值。例如:a=5;这句代码中5就是一个字常量。字常量(literal constant)可以被分为整数(Integer Numbers),浮点数(Floating-PointNumbers),字符(Characters)和字符串(Strings)。整数(Integer Numbers)1776707-273他们是整型常数,表示

40、十进制整数值。注意表示整型常数时我们不需要些引号(quotes()或任何特殊字符。毫无疑问它是个常量:任何时候当我们在程序中写1776,我们指的就是1776这个数值。除十进制整数另外,6+还允许使用八进制(octal numbers)和十六进制(hexadecimal numbers)的字常量(Mteral constants)如果我们想要表示一个八进制数,我们必须在它前面加上一个0字符(zero character),而表示十六进制数我们需要在它前面加字符Ox(zero,x)0例如以下字常量(literal constants)互相等值:75/H8制 decimal0113/八进制 octa

41、l0 x4b/十六进制 hexadecimal所有这些都表示同一个整数:75(seventy fiv e),分别以十进制数,八进制数和十六进制数表示。像变量一样,常量也是有数据类型的。默认的整数字常量的类型为int型。我们可以通过在后面加字母u或I来迫使它为无符号(unsigned)的类型或长整型(long)。75/int75u/unsigned int75I/long75ul/unsigned long这里后缀u和1可以是大写,也可以是4与。浮点数(Floating Point Numbers)浮点数以小数(decimals)和/或指数幕(exponents)的形式表示。它们可以包括一个小数

42、点,一个e字符(表示by ten at the Xth height,这里X是后面跟的整数值),或两者都包括。3.14159/3.141596.02e23/6.02 x 10A 10231.6e-19/1.6 x 10A-193.0/3.0以上是包含小数的以C+表示的4个有效数值。第一个是PI,第二个是Avogadro数之一,第三个是一个电子(electron)的电量(electric charge)(一个极小的数值)-所有这些都是近似值。最后一个是浮点数字常量表示数3。浮点数的默认数据类型为double.如果你想使用float或long double类型,可以在后面加f或I后缀,同样大小写都

43、可以:3.14159L/long double6.02e23f/float字符和字符串(Characters and strings)此外还有非数字常量,例 如:zPHello worldHow do you do?前两个表达式表示单独的字符(character),后面两个表示由若干字符组成的字符串(string)o注意在表示单独字符的时候,我们用单引号(single quotes(),在表示字符串或多于一个字符的时候我们用双引号(double quotes()。当以常量方式表示单个字符和字符串时,必须写上引号以便把他们和可能的变量标识或保留字区分开,注意以下例子:xXX指一个变量名称为X,而

44、X,指字符常量X。字符常量和字符串常量各有特点,例如escape codes,这些是除此之外无法在源程序中表示的特殊的字符,例如换行符newline(n)或跳跃符tab(t)o所有这些符号前面要加一个反斜杠inverted slash()这里列出了这些escape codes:n 换行符newliner 回车 carriage returnt 跳跃符 tabulationv 垂直跳跃 vertical tabulationb backspacef page feeda 警告 alert(beep),单引号 single quotes()双引号 double quotes()?问号 questi

45、on(?)反斜杠 inverted slash()例 如:tLeft t Rightonentwonthree另外你可以数字ASCII码表示一个字符,这种表示方式是在反斜杠()之后加以8 进制数或十六进制数表示的ASQ I码。在 第 一 种(八 进 制 octal)表 示 中,数字必需紧跟反斜杠(例如23或4 0),第二种(十六进制hexacedimal),必须在数字之前写一个x 字符(例如x20 或 x4A)。如果每一行代码以反斜杠inverted slash()结 束,字符串常量可以分多行代码表示:string expressed in two lines你还可以将多个被空格blanksp

46、ace、跳跃符tabulator、换 行 符 newline或其他有效空白符号分隔开的字符串常量连接在一起:we form a single string of characters最后如果我们想让字符串使用宽字符(w c h a rj),而不是窄字符(char),可以在常量的前面加前缀L:LThis is a wide character string宽字符通常用来存储非英语字符,比如中文字符,一个字符占两个字节。布尔型常量(Boolean Literals)布尔型只有两个有效的值:true和 false,其数据类型为bool.定义常量 Defined constants(#define)使

47、用预处理器指令#define,你可以将那些你经常使用的常量定义为你自己取的名字而不需要借助于变量。它的格式是:#define identifier value例 如:#define PI 3.14159265#define NEWLINEn#define WIDTH 100以上定义了三个常量。一旦做了这些声明,你可以在后面的程序中使用这些常量,就像使用其它任何常量一样,例 如:circle=2*PI*r;cout NEWLINE;实际上编译器在遇到#define指令的时候做的只是把任何出现这些常量名(在前面的例子中为PI,NEWLINE或 WIDTH)的地方替换成他们被定义为的代码(分别为3.

48、14159265,、n和 100)o因 此,由#define定义的常量被称为宏常量macroconstants,#define指令不是代码语句,它是预处理器指令,因此指令行末尾不需要加分号semicolon(;)0如果你在宏定义行末尾加了分号,当预处理器在程序中做常量替换的 时 候,分号也会被加到被替换的行中,这样可能导致错误。声明常量 declared constants(const)通过使用const前 缀,你可以定义指定类型的常量,就像定义一个变量一样:const int width=100;const char tab=t;const zip=12440;如果没有指定类型(如上面最后例

49、子中最后一行),编译器会假设常量为整型血。1.4操作符/运算符(Operators)前面已经学习了变量和常量,我们可以开始对它们进行操作,这就要用到J +的操作符。有 些 语 言,很多操作符都是一些关键字,比 如 add,equals等等。O +的操作符主要是由符号组成的。这些符号不在字母表中,但是在所有键盘上都可以找到。这个特点使得a+程序更简洁,也更国际化。运算符是a+语言的基础,所以非常重要。你不需要背下所有这一小节的内容,这些细节知识仅供你以后需要时参考。赋值 Assignation(=)赋值运算符的功能是将一个值赋给一个变量。a=5;将整数5赋给变量a。=运算符左边的部分叫做lval

50、ue(left value),右边的部分叫做rvalue(right value)o lvalue必须是一个变量,而右边的部分可以是一个常量,一个变量,一个运算(operation)的结果或是前面几项的任意组合。有必要强调赋值运算符永远是将右边的值赋给左边,永远不会反过来。a=b;将变量b(rvalue)的值赋给变量a(lvalue),不论a当时存储的是什么值。同时考虑到我们只是将b 的数值赋给a,以后如果b 的值改变了并不会影响到a的值.例 如:如果我们使用以下代码(变量值的变化显示在绿色注释部分):/赋值符号例子#include using namespace std;int main()

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

当前位置:首页 > 教育专区 > 教案示例

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

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