编程语言C++讲义课件.pdf
《编程语言C++讲义课件.pdf》由会员分享,可在线阅读,更多相关《编程语言C++讲义课件.pdf(171页珍藏版)》请在咨信网上搜索。
1.1 C+程序结构(Structure of a program)下面我们从一个最简单的程序入手看一个C+程序的组成结构。/m y first program in C+Hel l o Worl d!t t incl u d e u sing nam espace st d;int m ain()cou t “Hel l o Worl d!v;ret u rn 0;上面左侧显示了我们的第一个程序的源代码,代码文件名称为hel l owworl d.cpp。右边 显示了程序被编译执行后的输出结果。编辑和编译一个程序的方法取决于你用的是什么 编译器,根据它是否有图形化的界面及版本的不同,编译方法也有可能不同,具体请参 照你所使用的编译器的使用说明。以上程序是多数初学者学会写的第一个程序,它的运行结果是在屏幕上打出“Hel l o Worl d!”这句话。虽然它可能是C+可写出的最简单的程序之一,但其中已经包含了每 一个C+程序的基本组成结构。下面我们就逐个分析其组成结构的每一部分:/my first program in C+这是注释行。所有以两个斜线符号()开始的程序行都被认为是注释行,这些注释行是 程序员写在程序源代码内,用来对程序作简单解释或描述的,对程序本身的运行不会产 生影响。在本例中,这行注释对本程序是什么做了一个简要的描述。#include 以#标志开始的句子是预处理器的指示语句。它们不是可执行代码,只是对编译器作出指 示。在本例中这个句子#incl u d e 告诉编译器的预处理器将输入输出流 的标准头文件(iost ream,h)包括在本程序中。这个头文件包括了 C+中定义的基本标准 输入-输出程序库的声明。此处它被包括进来是因为在本程序的后面部分中将用到它的功 能。using namespace std;C+标准函数库的所有元素都被声明在一个名空间中,这就是st d名空间。因此为了能够 访问它的功能,我们用这条语句来表达我们将使用标准名空间中定义的元素。这条语句 在使用标准函数库的C+程序中频繁出现,本教程中大部分代码例子中也将用到它。int main()这一行为主函数(m ain fu nct ion)的起始声明。m ain fu nct ion是所有C+程序的运行的 起始点。不管它是在代码的开头,结尾还是中间-此函数中的代码总是在程序开始运 行时第一个被执行。并且,由于同样的原因,所有C+程序都必须有一个m ain fu nct ion。m ain后面跟了一对圆括号(),表示它是一个函数。C+中所有函数都跟有一对圆括号(),括号中可以有一些输入参数。如例题中显示,主函数(m ain fu nct ion)的内容紧跟在它的 声明之后,由花括号()括起来。cout”Hellow World!55;这个语句在木程序中最重要。cou t是C+中的标准输出流(通常为控制台,即屏幕),这句话把一串字符串(本例中为“Hel l o Worl d)插入输出流(控制台输出)中。cou t 在的声明在头文件iost ream,h中,所以要想使用cou t必须将该头文件包括在程序开始 处。注意这个句子以分号(。结尾。分号标示了一个语句的结束,C+的每一个语句都必须以 分号结尾。(C+程序员最常犯的错误之一就是忘记在语句末尾写上分号)。return 0;返回语句(ret u rn)引起主函数m ain。执行结束,并将该语句后面所跟代码(在本例中为 0)返回。这是在程序执行没有出现任何错误的情况下最常见的程序结束方式。在后面的 例子中你会看到所有C+程序都以类似的语句结束。你可能注意到并不是程序中的所有的行都会被执行。程序中可以有注释行(以开头),有编译器预处理器的指示行(以#开头),然后有函数的声明(本例中m ain函数),最 后是程序语句(例如调用cou t),最后这些语句行全部被括在主函数的花括号()内本例中程序被写在不同的行中以方便阅读。其实这并不是必须的。例如,以下程序 int m ain()cou t Hel l o Worl d;ret u rn 0;也可以被写成:int m ain()cou t Hel l o Worl d;ret u rn 0;以上两段程序是完全相同的。在C+中,语句的分隔是以分号(;)为分隔符的。分行写代码只是为了更方便人阅读。以下程序包含更多的语句:/m y second program in C+Hel l o Worl d!I m a C+program t t incl u d e int m ain()cou t ”Hel l o Worl d!;cou t I m a C+program”;ret u rn 0;在这个例子中,我们在两个不同的语句中调用了 cou t 函数两次。再一次说明分行写 程序代码只是为了我们阅读方便,因为这个m ain函数也可以被写为以下形式而没有任 何问题:int m ain()cou t Hel l o Worl d!cou t I m t o C+program ret u rn 0;为方便起见,我们也可以把代码分为更多的行来写:int m ain()cou t“Hel l o Worl d!,z;cou t T m a C+program”;ret u rn 0;)它的运行结果将和上面的例子完全一样。这个规则对预处理器指示行(以#号开始的行)并不适用,因为它们并不是真正的语句。它们由预处理器读取并忽略,并不会生成任何代码。因此他们每一个必须单独成行,末 尾不需要分号(;)注释(Comments)注释(com m ent s)是源代码的一部分,但它们会被编译器忽略。它们不会生成任何执行代 码。使用注释的目的只是使程序员可以在源程序中插入一些说明解释性的内容。C+支持两中插入注释的方法:/l ine com m ent/*bl ock com m ent*/第一种方法为行注释,它告诉编译器忽略从开始至本行结束的任何内容。第二种为块 注释(段注释),告诉编译器忽略在/*符号和*/符号之间的所有内容,可能包含多行内 容。在以下我们的第二个程序中,我们插入了更多的注释。/*m y second program in C+wit h m ore com m ent s*/Hel l o Worl d!I m a C+programt t incl u d e int m ain()cou t ”Hel l o Worl d!;/says Hel l o Worl d!cou t T m a C+program;/says I m a C+program ret u rn 0;如果你在源程序中插入了注释而没有用符号或/*和*/符号,编译器会把它们当成C+的语句,那么在编译时就会出现一个或多个错误信息。1.2 变量和数据类型(Variables and Data types)你可能觉得这个“Hel l ow Worl d”程序用处不大。我们写了好儿行代码,编译,然后执 行生成的程序只是为了在屏幕上看到一句话。的确,我们直接在屏幕上打出这句话会更 快。但是编程并不仅限于在屏幕上打出文字这么简单的工作。为了能够进一步写出可以 执行更有用的任务的程序,我们需要引入变量(variabl e)这个的概念。让我们设想这样一个例子,我要求你在脑子里记住5这个数字,然后再记住2这个数字。你已经存储了两个数值在你的记忆里。现在我要求你在我说的第一个数值上加1,你应 该保留6(即5+1)和2在你的记忆里。现在如果我们将两数相减可以得到结果4。所有这些你在脑子里做的事情与计算机用两个变量可以做的事情非常相似。同样的处理 过程用C+来表示可以写成下面一段代码:a=5;b=2;a=a+1;resu l t=a-b;很明显这是一个很简单的例子,因为我们只用了两个小的整数数值。但是想一想你的电 脑可以同时存储成千上万这样的数值,并进行复杂的数学运算。因此,我们可以将变量(variabl e)定义为内存的一部分,用以存储一个确定的值。每一个变量(variabl e)需要一个标识,以便将它与其他变量相区别,例如,在前面的代 码中,变量标识是a,b,和resu l t。我们可以给变量起任何名字,只要它们是有效的 标识符。标识(Identifiers)有效标识由字母(l et t er),数字(d igit s)和下划线(_)组成。标识的长度没有限制,但是有些编译器只取前32个字符(剩下的字符会被忽底)。空格(spaces),标点(pu nct u at ion m arks)和符号(sym bol s)都不可以出现在标识中。只 有字母(l et t ers),数字(d igit s)和下划线(_)是合法的。并且变量标识必须以字母开头。标识也可能以下划线(_)开头,但这种标识通常是保留给为外部连接用的。标识不可以 以数字开头。必须注意的另一条规则是当你给变量起名字时不可以和C+语言的关键字或你所使用的 编译器的特殊关键字同名,因为这样与这些关键字产生混淆。例如,以下列出标准保留 关键字,他们不允许被用作变量标识名称:asm,au t o,bool,break,case,cat ch,char,cl ass,const,const _cast,cont inu e,d efau l t,d el et e,d o,d ou bl e,d ynam ic_cast,el se,enu m,expl icit,ext ern,fal se,fl oat,for,friend,got o,if,inl ine,int,l ong,m u t abl e,nam espace,new,operat or,privat e,prot ect ed,pu bl ic,regist er,reint erpret _cast,ret u rn,short,signed,sizeof,st at ic,st at ic_cast,st ru ct,swit ch,t em pl at e,t his,t hrow,t ru e,t ry,t yped ef,t ypeid,t ypenam e,u nion,u nsigned,u sing,virt u al,void,vol at il e,wchar_t,whil e另外,不要使用一些操作符的替代表示作为变量标识,因为在某些环境中它们可能被用 作保留词:and,and _eq,bit and,bit or,com pl,not,not _eq,or,or_eq,xor,xor_eq你的编译器还可能包含一些特殊保留词,例如许多生成16位码的编译器(比如一些DO S 编译器)把far,hu ge和near也作为关键字。非常重要:C+语言是“大小写敏感”(“case sensit ive)的,即同样的名字字母大 小写不同代表不同的变量标识。因此,例如变量RES ULT,变量resu l t和变量Resu l t分 别表示三个不同的变量标识.基本数据类型(Fundamental Data types)编程时我们将变量存储在计算机的内存中,但是计算机要知道我们要用这些变量存储什 么样的值,因为一个简单的数值,一个字符,或一个巨大的数值在内存所占用的空间是 不一样的。计算机的内存是以字节(byt e)为单位组织的。一个字节(byt e)是我们在C+中能够操 作的最小的内存单位。一个字节(byt e)可以存储相对较小数据:一个单个的字符或一个 小整数(通常为一个0到255之间的整数)。但是计算机可以同时操作处理由多个字节 组成复杂数据类型,比如长整数(l ong int egers)和小数(d ecim al s)o以下列表总结了 现有的C+基本数据类型,以及每一类型所能存储的数据范围:数据类型(DAT A T YPES)名称字节 数*描述范围*char1字符(charact er)或整数(int eger),8 位(bit s)长有符号(signed):-128 到 127无符号(u nsigned):0 到 255short int(short)2短整数(int eger)16 位(bit s)长有符号(signed):-32768 到32767无符号(u nsigned):0 到 65535l ong int(l ong)4长整数(int eger)32 位(bit s)长有符号(signed):-2147483648 到 2147483647无符号(u nsigned):0到4294967295int4整数(int eger)有符号(signed):-2147483648到 2147483647无符号(u nsigned):0到4294967295fl oat4浮点数(fl oat ing point nu m ber)3.4e+/-38(7 个数字(7d igit s)d ou bl e8双精度浮点数(d ou bl e precision fl oat ing point nu m ber)1.7e+/-308(15 d igit s)l ong d ou bl e8长双精度浮点数(l ong d ou bl e precision fl oat ing point nu m ber)1.7e+/-308(15 d igit s)bool1布尔Bool ean值。它只能是真(t ru e)或假(fal se)两值之一。t ru e 或 fal sewchar_t2宽字符(Wid e charact er)。这是为 存储两字节(2 byt es)长的国际字符 而设计的类型。一个宽字符(1 wid e charact ers)*字节数一列和范围一列可能根据程序编译和运行的系统不同而有所不同。这里列出的 数值是多数32位系统的常用数据。对于其他系统,通常的说法是整型(int)具有根据系 统结构建议的自然长度(即一个字one word的长度),而4中整型数据char,short,int,l ong的长度必须是递增的,也就是说按顺序每一类型必须大于等于其前面一个类型的长 度。同样的规则也适用于浮点数类型fl oat,d ou bl e和l ong d ou bl e,也是按递增顺序。除以上列出的基本数据类型外,还有指针(point er)和void参数表示类型,我们将在 后面看到。变量的声明(Declaration of variables)在C+中要使用一个变量必须先声明(d ecl are)该变量的数据类型。声明一个新变量的 语法是写出数据类型标识符(例如int,short,fl oat.)后面跟一个有效的变量标识 名称。例如:int a;fl oat m ynu m ber;以上两个均为有效的变量声明(variabl e d ecl arat ion)o第一个声明一个标识为a的 整型变量(int variabl e),第二个声明一个标识为m ynu m ber的浮点型变量(fl oat variabl e)0声明之后,我们就可以在后面的程序中使用变量a和m ynu m ber 了。如果你需要声明多个同一类型的变量,你可以将它们缩写在同一行声明中,在标识之间 用逗号(com m a)分隔。例如:int a,b,c;以上语句同时定义了 a、b、c 3个整型变量,它与下面的写法完全等同:int a;int b;int c;整型数据类型(char,short,l ong和int)可以是有符号的(signed)或无符号的(u nsigned),这取决于我们需要表示的数据范围。有符号类型(signed)可以表示正数和负数,而无符号类型(u nsigned)只能表示正数和0。在定义一个整型数据变量时可以 在数据类型前面加关键字signed或u nsigned来声明数据的符号类型。例如:u nsigned short Nu m berO fS ons;signed int MyAccou nt Bal ance;如果我们没有特别写出signed或u nsigned,变量默认为signed,因此以上第二个声明 我们也可以写成:int MyAccou nt Bal ance;因为以上两种表示方式意义完全一样,因此我们在源程序通常省略关键字signed 0唯一的例外是字符型(char)变量,这种变量独立存在,与signed char和u nsigned char 型均不相同。short和l ong可以被单独用来表示整型基本数据类型,short相当于short int,l ong相当于l ong int o也就是说short year;和short int year;两种声明是等价 的。最后,signed和u nsigned也可以被单独用来表示简单类型,意思分别同signed int和 u nsigned int相同,即以下两种声明互相等同:u nsigned MyBirt hYear;u nsigned int MyBirt hYear;下面我们就用C+代码来解决在这一节开头提到的记忆问题,来看一下变量定义是如何 在程序中起作用的。/operat ing wit h variabl es 4t t incl u d e u sing nam espace st d;int m ain()(/d ecl aring variabl es:int a,b;int resu l t;/process:a=5;b=2;a=a+1;resu l t=a-b;/print ou t t he resu l t:cou t resu l t;/t erm inat e t he program:ret u rn 0;如果以上程序中变量声明部分有你不熟悉的地方,不用担心,我们在后面的章节中很快 会学到这些内容。变量的范围(Scope of variables)乎;所有我们要使用的变量都必须事先声明过。c和C+语言的一个重要区别是,在C+语言中我们可以在源程序中任何地方声明变量,甚至可以在两个可执行(excu t abl e)语句的中间声明变量,而不象在C语言中变量声明只能在程序的开头部分。然而,我们还是建议在一定程度上遵循C语言的习惯来声明变量,因为将变量声明放在 一处对d ebu g程序有好处。因此,传统的C语言方式的变量声明就是把变量声明放在每 一个函数(fu nct ion)的开头(对本地变量l ocal variabl e)或直接放在程序开头所有函 数(fu nct ion)的外面(对全局变量gl obal variabl e)。一个变量可以是本地(l ocal)范围内有效,叫做本地变量,也可以是全局(gl obal)范围内 有效,叫做全局变量。全局变量要定义在一个源码文件的主体中,所有函数(包括主函数 m ainO)之外。而本地变量定义在一个函数甚至只是一个语句块单元中。如下图所示:It include int In.teg-er;chax aChaxacter;char string 20;unsigned int NumberOfSons;am1 JI.1main()(unsigned short Age;float AHumber,AnotherOne;cout Enter your age:c in Age;lUUUCllUIlS全局变量Gl obalvariabl es可以在程序中 任何地方任何函数(fu nct ion)中被引用,只要是在变量的声明之 后。本地变量l ocalvariabl es的作用范围被 局限在声明它的程序范围 内。如果它们是在一个函 数的开头被声明的(例如 m ain函数),它们的作用 范围就是整个m ain函数。在左图的例子中,这就意 味着如果在m ain函数外还另有一个函数,m ain函数中声明的本地变量(Age,ANu m ber,Anot herO ne)不能够被另一个函数使用,反之亦然。在C+中,本地变量(l ocal variabl e)的作用范围被定义在声明它的程序块内(一个程 序块是被一对花括号(cu rl y bracket s1)括起来的一组语句)。如果变量是在一个函 数(fu nct ion)中被声明的,那么它是一个函数范围内的变量,如果变量是在一个循环中(l oop)中被声明的,那么它的作用范围只是在这个循环(l oop)之中,以此类推。除本地和全局范围外,还有一种外部范围,它使得一个变量不仅在同一源程序文件中可 见,而且在其他所有将被链接在一起的源文件中均可见。变量初始化(Initialization of variables)当一个本地变量(l ocal variabl e)被声明时,它的值默认为未定(u nd et erm ined)。但你 可能希望在声明变量的同时赋给它一个具体的值。要想达到这个目的,需要对变量进行 初始化。C+中有两种初始化方法:第一种,又叫做类C(c-l ike)方法,是在声明变量的时候加上一个等于号,并在后面 跟上想要的数值:t ype id ent ifier=init ial _val u e;例如,如果我们想声明一个叫做a的int变量并同时赋予它0这个值,我们可以这样写:int a=0;另外一种变量初始化的方法,又叫做构造函数(const ru ct or)初始化,是将初始值用小 括号(parent hesis()括起来:t ype id ent ifier(init ial _val u e);例如:int a(0);在C+.中以上两种方法都正确并且两者等同。/变量初始化 6t t incl u d e iost reamu sing nam espace st d;int m ain()int a=5;/初始值为5int b(2);初始值为2int resu l t;/不确定初始值a=a+3;resu l t=a-b;cou t resu l t;ret u rn 0;字符串(strings)字符串是用来存储一个以上字符的非数字值的变量。C+提供一个st ring类来支持字符串的操作,它不是一个基本的数据类型,但是在一般 的使用中与基本数据类型非常相似。与普通数据类型不同的一点是,要想声明和使用字可串类型的变量,需要引用头文”,并且使用u sing nam espace语句来使用标准名空间(st d),如下面例子所示:/C+字符串例题 T his is a st ringt t incl u d e t t incl u d e u sing nam espace st d;int m ain()(st ring m yst ring=T his is a st ring”;cou t m yst ring;ret u rn 0;如上面例子所示,字符串变量可以被初始化为任何字符串值,就像数字类型变量可以被 初始化为任何数字值一样。以下两种初始化格式对字符串变量都是可以使用的:st ring m yst ring=T his is a st ring”;st ring m yst ring(T his is a st ring);字符串变量还可以进行其他与基本数据类型变量一样的操作,比如声明的时候不指定初 始值,和在运行过程中被重新赋值。/C+字符串例题 2 T his is t he init ialt t incl u d e st ring cont entt t incl u d e T his is a d ifferentu sing nam espace st d;st ring cont entint m ain()st ring m yst ring;m yst ring=“T his is t he init ial st ring cont ent”;cou t m yst ring end l;m yst ring=“T his is a d ifferent st ring cont ent”;cou t m yst ring end l;ret u rn 0;要了解更加详细的C+字符串操作,建议参考Cpl u spl u s上的st ring类reference。1.3 常量(Constants)一个常量(const ant)是一个有固定值的表达式。字(Literals)字是用来在程序源码中表达特定的值。在前面的内容中我们已经用了很多的字来给变量 赋予特定的值。例如:a=5;这句代码中5就是一个字常量。字常量(l it eral const ant)可以被分为整数(Int eger Nu m bers),浮点数(Fl oat ing-Point Nu m bers),字符(Charact ers)和字符串(S t rings)。整数(Integer Numbers)1776707-273他们是整型常数,表示十进制整数值。注意表示整型常数时我们不需要些引号(qu ot es O)或任何特殊字符。毫无疑问它是个常量:任何时候当我们在程序中写1776,我们 指的就是1776这个数值。除十进制整数另外,C+还允许使用八进制(oct al nu m bers)和十六进制(hexad ecim al nu m bers)的字常量(l it eral const ant s)o如果我们想要表示一个八进制数,我们必 须在它前面加上一个0字符(zero charact er),而表示十六进制数我们需要在它前面加 字符O x(zero,x)。例如以下字常量(l it eral const ant s)互相等值:75/十进制 d ecim al0113/八进制 oct al0 x4b/十六进制 hexad ecim al所有这些都表示同一个整数:75(sevent y five),分别以十进制数,八进制数和十六 进制数表示。像变量一样,常量也是有数据类型的。默认的整数字常量的类型为int型。我们可以通 过在后面加字母u或1来迫使它为无符号(u nsigned)的类型或长整型(l ong)075 75u 751 75u l/int/u nsigned int/l ong/u nsigned l ong这里后缀u和1可以是大写,也可以是小写。浮点数(Floating Point Numbers)浮点数以小数(d ecim al s)和/或指数幕(exponent s)的形式表示。它们可以包括一 个小数点,一个e字符(表示by t en at t he Xt h height,这里X是后面跟的整数值),或两者都包括。3.14159/3.141596.02e23/6.02 x 1010231.6e-19/1.6 x 10-193.0/3.0以上是包含小数的以C+表示的4个有效数值。第一个是PL第二个是Avogad ro数之 一,第三个是一个电子(el ect ron)的电量(el ect ric charge)(一个极小的数值)-所 有这些都是近似值。最后一个是浮点数字常量表示数3。浮点数的默认数据类型为d ou bl e。如果你想使用fl oat或l ong d ou bl e类型,可以在后 面加f或1后缀,同样大小写都可以:3.14159L/l ong d ou bl e6.02e23f/fl oat字符和字符串(Characters and strings)此外还有非数字常量,例如:,PHel l o worl d How d o you d o?前两个表达式表示单独的字符(charact er),后面两个表示由若干字符组成的字符串(st ring)o注意在表示单独字符的时候,我们用单引号(singl e qu ot es(),在表 示字符串或多于一个字符的时候我们用双引号(d ou bl e qu ot es()。当以常量方式表示单个字符和字符串时,必须写上引号以便把他们和可能的变量标识或 保留字区分开,注意以下例子:x指一个变量名称为x,而 x指字符常量 x。字符常量和字符串常量各有特点,例如escape cod es,这些是除此之外无法在源程序中 表示的特殊的字符,例如换行符newl ine(n)或跳跃符t ab(t)。所有这些符号前面 要加一个反斜杠invert ed sl ash()。这里列出了这些escape cod es:例如:n换行符newl ine r回车 carriage ret u rn t跳跃符 t abu l at ion v垂直跳跃 vert ical t abu l at ion bbackspace fpage feed a警告 al ert(beep)单引号 singl e qu ot es()双引号 d ou bl e qu ot es()?问号 qu est ion(?)w反斜杠 invert ed sl ash()t“Left t Right”“one nt wo nt hree”另外你可以数字AS CII码表示一个字符,这种表示方式是在反斜杠()之后加以8进制 数或十六进制数表示的AS CH码。在第一种(八进制oct al)表示中,数字必需紧跟反 斜杠(例如23或40),第二种(十六进制hexaced im al),必须在数字之前写一个x字符(例 如 x20 或 x4A)o如果每一行代码以反斜杠invert ed sl ash()结束,字符串常量可以分多行代码表示:“st ring expressed in t wo l ines”你还可以将多个被空格bl ankspace、跳跃符t abu l at or、换行符newl ine或其他有效空 白符号分隔开的字符串常量连接在一起:we rorm a singl e st ring oi charact ers最后如果我们想让字符串使用宽字符(wchar_t),而不是窄字符(char),可以在常量的 前面加前缀L:T his is a wid e charact er st ring”宽字符通常用来存储非英语字符,比如中文字符,一个字符占两个字节。布尔型常量(Bool ean Lit eral s)布尔型只有两个有效的值:t ru e和fal se,其数据类型为bool。定义常量 Defined constants(#define)使用预处理器指令#d efine,你可以将那些你经常使用的常量定义为你自己取的名字而不 需要借助于变量。它的格式是:#d efine id ent ifier val u e例如:t t d efine PI 3.14159265t t d efine NEWLINE n#d efine WIDT H 100以上定义了三个常量。一旦做了这些声明,你可以在后面的程序中使用这些常量,就像 使用其它任何常量一样,例如:circl e=2*PI*r;cou t NEWLINE;实际上编译器在遇到#d efine指令的时候做的只是把任何出现这些常量名(在前面的例 子中为PL NEWLINE或WIDT H)的地方替换成他们被定义为的代码(分别为3.14159265,n和100)。因此,由#d ef ine定义的常量被称为宏常量m acro const ant sod efine指令不是代码语句,它是预处理器指令,因此指令行末尾不需要加分号 sem icol on(;)。如果你在宏定义行末尾加了分号(;),当预处理器在程序中做常量替 换的时候,分号也会被加到被替换的行中,这样可能导致错误。声明常量 declared constants(const)通过使用const前缀,你可以定义指定类型的常量,就像定义一个变量一样:const int wid t h=100;const char t ab=t;const zip=12440;如果没有指定类型(如上面最后例子中最后一行),编译器会假设常量为整型into1.4 操作符/运算符(Operators)前面已经学习了变量和常量,我们可以开始对它们进行操作,这就要用到C+的操作符。有些语言,很多操作符都是一些关键字,比如ad d,equ al s等等。C+的操作符主要是 由符号组成的。这些符号不在字母表中,但是在所有键盘上都可以找到。这个特点使得 C+程序更简洁,也更国际化。运算符是C+语言的基础,所以非常重要。你不需要背下所有这一小节的内容,这些细节知识仅供你以后需要时参考。赋值 Assignation(=)赋值运算符的功能是将一个值赋给一个变量。a=5;将整数5赋给变量a。=运算符左边的部分叫做l val u e(l eft val u e),右边的部分叫做 rval u e(right val u e)o l val u e必须是一个变量,而右边的部分可以是一个常量,一个 变量,一个运算(operat ion)的结果或是前面儿项的任意组合。有必要强调赋值运算符永远是将右边的值赋给左边,永远不会反过来。a=b;将变量b(rval u e)的值赋给变量a(l val u e),不论a当时存储的是什么值。同时考虑到 我们只是将b的数值赋给a,以后如果b的值改变了并不会影响到a的值.例如:如果我们使用以下代码(变量值的变化显示在绿色注释部分):/赋值符号例子 a:4 b:7t t incl u d e u sing nam espace st d;int m ain()int a,b;/a:?,b:?a=10;/a:10,b:?b=4;/a:10,b:4a=b;/a:4,b:4b=7;/a:4,b:7cou t a:;cou t a;cou t b:;cou t b;ret u rn 0;以上代码结果是a的值为4,b的值为7。最后一行中b的值被改变并不会影响到a,虽 然在此之前我们声明了 a=b;(从右到左规则right-t oT eft ru l e)oC+拥有而其他语言没有的一个特性是赋值符(二)可以被用作另一个赋值符的rval u e(或rval u e的一部分)。例如:a=2+(b=5);等同于:b=5;a=2+b;它的意思是:先将5赋给变量b,然后把前面对b的赋值运算的结果(即5)加上2再赋 给变量a,这样最后a中的值为7。因此,下面的表达式在C+中也是正确的:a=b=c=5;将5同时赋给3个变量a,b和c。数学运算符 Arithmetic operators(+,-,*,/,%)C+语言支持的5种数学运算符为:+力口 ad d it ion 一减 su bt ract ion*乘 m u l t ipl icat ion/除 d ivision%取模 m od u l e加减乘除运算想必大家都很了解,它们和一般的数学运算符没有区别。唯一你可能不太熟悉的是用百分号(%)表示的取模运算(m od u l e)o取模运算是取两个整 数相除的余数。例如,如果我们写a=11%3;,变量a的值将会为结果2,因为2是 11除以3的余数。组合运算符 Compound assignation operators(+=,=,*=,/=,%=,=,=,C+以书写简练著称的一大特色就是这些组合运算符com pou nd assignat ion operat ors(+二,-二,*二和/二及其他),这些运算符使得只用一个基本运算符就可改写变量的值:val u e+二 increase;等同于 val u e=val u e+increase;a-=5;等同于 a=a-5;a/=b;等同于 a=a/b;price*=u nit s+1;等同于 price=price*(u nit s+1);其他运算符以此类推。例如:/组合运算符例子 5 t t incl u d e u sing nam espace st d;int m ain()int a,b=3;a=b;a+=2;cou t,=,大于 Great er t han=大于等于 Great er or equ al t han二小于等于 Less or equ al t han(7=5)将返回fal se.(5 4)将返回t ru e.(3 1=2)将返回t ru e.(6=6)将返回t ru e.(5 5)将- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编程 语言 C+ 讲义 课件
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文