教学材料《C++语言程序设计》-第2章_第1页
教学材料《C++语言程序设计》-第2章_第2页
教学材料《C++语言程序设计》-第2章_第3页
教学材料《C++语言程序设计》-第2章_第4页
教学材料《C++语言程序设计》-第2章_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2.1C++语言的基本词法2.1.1C++的字符集字符是构成C++语言的最基本元素。用C++语言编写程序,除了字符型数据外,其他所有成分都是由字符集中的字符构成。C++语言的字符集由以下字符构成:英文字母(52个):A~Z,a~z。数字字符(10个):0~9。特殊字符(30个):~、!、#、%、^、&、*、(、)、−、_、+、=、{、}、[、]、|、\、:、;、"、′、<、>、,、.、/、?、空格下一页返回2.1C++语言的基本词法2.1.2C++的标识符标识符是用户在程序设计中给特定对象起的名字。在C++程序设计中,需要由用户定义的标识符有变量、对象、符号常量、用户定义的数据类型、函数名字等。C++语言标识符的构成规则如下:由英文字母、下画线“_”和数字符号组成的一串字符;以英文字母或下画线“_”开始;大写字母和小写字母代表不同的标识符;不能用C++语言的保留字。标识符的字符数可以任意,但只有前32个字符有效。通常,一个标识符由1~32个字符组成。上一页下一页返回2.1C++语言的基本词法2.1.3C++的保留字保留字是C++系统预定义的、用英文小写字母组成的特定单词。每个保留字都被C++系统赋予了特定的含义,具有相应的功能。编程时不能将保留字用作函数名、变量名、类名和对象名等。在预处理命令中,使用的命令关键字有include,define,ifdef和ifndef等。这些命令关键字虽然不归类于保留字,但编程时要将它们看作C++保留字,不要将它们用作其他用途,以免引起混乱。上一页返回2.2基本数据类型数据是记录概念和事物的符号表示。记录中国人的姓名用汉字表示,记录人的年龄用十进制数表示,记录人的体重用实数表示。由这些记录得到的姓名、年龄和体重都叫数据。根据数据性质的不同,可以将数据分为不同的类型。下一页返回2.2基本数据类型2.2.1C++的基本数据类型在C++语言中,每一种数据类型都对应着唯一的类型关键字、类型长度和值域范围。C++的基本数据类型如表2−1所示。、C++的基本数据类型有bool(布尔型,又称逻辑型)、char(字符型)、int(整型)、flort(浮点型,表示实数)和double(双精度浮点型,简称双精度型)。char型从本质上说也是整数类型,它是长度为一个字节的整数,存放字符的ASCII码。保留字short、long、signed和unsigned被称作修饰符。上一页下一页返回2.2基本数据类型2.2.2常量在程序执行的过程中,根据数据值的变化情况可将数据分为常量和变量。无论是常量还是变量,都应有确定的数据类型。常量是指在程序运行的整个过程中其值始终不改变的量。常量又可以分为字面常量和符号常量两种。下面介绍整型常量、实型常量、字符常量、字符串常量和布尔常量等字面常量。上一页下一页返回2.2基本数据类型1.整型常量整型常量是以字面形式出现的整数。它有十进制、八进制和十六进制3种表示方法。十进制整型常量由正号“+”或负号“−”开始,接着由首位为非0的若干个十进制数字所组成。正数前面的正号可以省略。2.实型常量实型常量是以十进制方式出现的实数,它有一般形式和指数形式两种表示方式。上一页下一页返回2.2基本数据类型3.字符常量字符常量是用单引号括起来的一个字符,如'f','a','?','$'等。有一些字符是不可显示字符,也无法通过键盘输入,如响铃、换行、回车等。C++提供了一种称为转义序列的表示方法来表示这些字符。表2−2列出C++语言预定义的转义序列。上一页下一页返回2.2基本数据类型4.字符串常量字符串常量是用一对双引号括起来的字符序列。例如:"asdf","yes"都是字符串常量。由于双引号是字符串的界限符,字符串中的双引号要用转义序列表示。表示pleaseenter“yes”字or“no”的字符串为:"pleaseenter\"yes\"or\"no\""。符串与字符在内存中存放的形式是不同的。字符串在内存中存储的形式是:按字符串中字符的排列次序,顺序存储其ASCII码,每个字符占一个字节,并在字符串尾加'\0'作为结尾标记。上一页下一页返回2.2基本数据类型5.布尔常量布尔常量又称逻辑常量。布尔常量只有两个值:0表示逻辑假,用常量false表示;1表示逻辑真,用常量true表示。上一页下一页返回2.2基本数据类型2.2.3变量在程序执行过程中其值可以变化的量称为变量。和常量一样,每一个变量也具有相应的数据类型。变量在使用之前需要首先声明其类型和名称。变量名要符合标识符构成的规则。在同一语句中可以声明多个同一类型的变量。声明了变量的类型和变量名后,就可以用赋值语句对变量进行赋值。在程序运行时,系统将给声明过的变量分配内存空间,用以存放数据。因此,变量名也就是相应内存单元的名字。在声明一个变量名的同时,也可以对它赋初值,这称为变量初始化。上一页下一页返回2.2基本数据类型使用符号常量,可提高程序的可读性。另外,程序中如果多次使用某一常量时,当要对该常量修改的情况下,要修改多处常量的值,这往往顾此失彼,容易引起错误。使用符号常量时,只需修改声明时的赋初值语句,从而避免了因修改多处常量带来数据的不一致性。整型变量可分为int,shortint,longint和unsignedint,unsignedshort,unsignedlong等类型,整型常量赋值给上述几种类型的整型变量时必须注意数据类型的匹配。上一页下一页返回2.2基本数据类型注意:(1)一个短整型常量其值在32768~32767范围内,可以赋值给shortint型变量。(2)一个整型常量其值超过了上述范围,而在2147483648~2147483647范围之内,可以将它赋值给一个int或longint型变量。(3)常量中无unsigned类型。但一个非负值的整型常量可以赋值给unsigned型的整型变量,只要它的数据范围不超过变量数值可以表示的范围即可。上一页下一页返回2.2基本数据类型对整型变量定义时需要注意:(1)变量定义一般要放于程序块的首部,以免在编译中出现变量未定义的错误。变量定义的位置决定了被定义变量的作用域和生命期。但是,C++语言允许随时应用变量随时定义,一般提倡在程序块首先定义的风格。(2)描述数据类型的关键字与被定义的变量之间起码要有一个以上的空格隔开,这样做的目的一是便于阅读程序,二是便于编译系统识别。上一页下一页返回2.2基本数据类型(3)多个变量是同一数据类型时,可以用一个数据类型关键字进行定义,但要注意,变量间要用逗号隔开,结尾要用分号结束。(4)变量可以以任意顺序进行定义,不必与它们在代码块中出现的顺序相对应。(5)在定义shortint型,longint型和unsignedint型变量时,可以只用short,long和unsigned保留字进行定义。上一页返回2.3运算符与表达式2.3.1运算符与表达式概述运算符又称为操作符,它是对数据进行运算的符号,参与运算的数据称为操作数。由操作数和操作符连接而成的式子称为表达式。一个运算符可以是一个字符,也可以由两个或三个字符所组成,还有的运算符是C++的保留字。例如:赋值号“=”是一个字符,不等于号“!=”是两个字符,左移赋值号“<<=”是三个字符,测试类型长度运算符sizeof则是一个保留字。上一页下一页返回2.3运算符与表达式按运算符要求操作数的多少,可将运算符分为单目(或一元)运算符、双目(或二元)运算符和三目(或三元)运算符三类。单目运算符一般位于操作数之前,如取x的负值为−x。双目运算符一般位于两个操作符之间,如计算两数a,b之积是a*b。三目运算符仅有一个,又称为条件运算符。它含有两个字符将三个操作数分隔开。每一种运算符都有一定的优先级,用来决定它在表达式中的运算次序。当一个表达式中包含多个运算符时,先进行优先级高的运算符的运算。当多个同一优先级的运算时,运算顺序由运算符的结合性确定。C++语言中有算术运算、赋值运算、关系运算、逻辑运算、位运算以及其他运算。下一页返回2.3运算符与表达式2.3.2赋值运算符及表达式C++的赋值运算包括简单赋值运算符和复合赋值运算符。C++的简单赋值运算符为“=”。赋值运算是将等号右边表达式的值赋给等号左边的变量。在一个赋值表达式中可以使用多个赋值运算符实现给多个变量赋值的功能。C++的复合赋值运算符有10个:+=、−=、*=、/=、%=、<<=、>>=、&=、^=和|=。其中前5个是算术运算符与赋值运算复合而成,后5个是位运算与赋值运算复合而成。上一页下一页返回2.3运算符与表达式复合赋值运算是把复合运算符右边的表达式的值同左边变量的值进行相应的算术运算或位运算后,再将这个运算结果赋给左边的变量。例如,x+=3是将x的值加3后再赋值给变量x,它相当于x=x+3表达式的功能。下面再举几例说明复合赋值运算:x*=y+8//等价于x=x*(y+8)a+=a-=a*a//等价于a=a+(a-a*a)(x+=5)*2//等价于(x=x+5)*2上一页下一页返回2.3运算符与表达式2.3.3算术运算符及表达式C++中的算术运算符包括基本算术运算符和增一、减一运算符。基本算术运算符有:加(+)、减(−)、乘(*)、除(/)、取余(%)和取负值(−)。这些基本算术运算符的意义与数学中相应运算的意义是一致的。其中取负值是一元运算,其他均是二元运算。在运算优先级方面,取负值优先级最高,乘、除和取余运算符次之,加、减运算符的优先级最低。同级运算的结合性都是从左到右。上一页下一页返回2.3运算符与表达式2.3.4关系运算符及表达式C++的关系运算有6个:小于(<)、小于等于(<=)、大于(>)、大于等于(>=)、等于(==)和不等于(!=)。6个关系运算都是双目运算,用来比较两个操作数的关系,运算结果均为逻辑值假(false)或真(true)。前4个关系运算符的优先级相同,且高于后2个相同优先级的关系运算符。用关系运算符将两个表达式连接起来构成关系表达式。当关系表达式成立时结果为逻辑真(true),否则为逻辑假(false)。上一页下一页返回2.3运算符与表达式2.3.5逻辑运算符及表达式C++有三个逻辑运算符:逻辑非(!)、逻辑与(&&)和逻辑或(||)。逻辑非的优先级最高,逻辑与次之,逻辑或最低。逻辑非是单目运算,逻辑与和逻辑或是双目运算。逻辑运算的值是0或1,若它们不是一个逻辑值,则对于非0值首先转换为逻辑值1,对0值转换为逻辑0。“!”运算符的作用是将操作数取反。如果操作数a的值是非0,则!a的值为0;反之亦然。“&&”运算符是求两个操作数的逻辑与。上一页下一页返回2.3运算符与表达式只有当两个操作数的值都是非0时,与运算的结果才是1,其他情况下与运算的结果均为0。“||”运算符是求两个操作数的逻辑或。只有当两个操作数的值都是0时,或运算的结果才是0,其他情况下或运算的结果为1。逻辑非、与、或的运算规则如表2−3所示。上一页下一页返回2.3运算符与表达式2.3.6位运算符及表达式C++中提供了6个位运算符:按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)和右移(>>)。一般高级语言处理数据的最小单位是字节,C++继承了C语言的优点,能够对数据按二进制位进行操作。(1)“&”运算是将两个操作数对应的每一位分别进行逻辑与运算。(2)“|”运算是将两个操作数对应的每一位分别进行逻辑或操作。上一页下一页返回2.3运算符与表达式(3)“^”运算是将两个操作数对应的每一位进行异或操作。异或运算的原则为:若对应位相同,则该位结果是0(4)“~”运算是一元运算,其作用是将一个操作数的每一位取反。,若对应位不同,则该位结果为1。上一页下一页返回2.3运算符与表达式2.3.7移位运算符及表达式C++语言提供了与汇编语言中的移位操作相类似的移位运算符。移位运算符有:右移位运算符(>>),左移位运算符(<<)。它们的优先级是第5级,结合性是从左至右结合。移位运算符是由两个大于号和两个小于号构成。其尖头所指的方向表示移位运算的方向——右移位或左移位运算。移位运算也是按位(bit)进行操作的。移位运算符都是双目运算符。移位运算符左边的表达式是被移位的操作数,其右边表达式的值表示移位的位数。由移位运算符构成的表达式是移位表达式。上一页下一页返回2.3运算符与表达式移位运算符有如下要求:(1)移位运算表达式中的两个操作数都必须具有整型或字符型数据类型,移位运算符右边的表达式的值不能是负数。(2)向左移位时,最左边的位被舍弃掉,右边腾出的位用0填补。上一页下一页返回2.3运算符与表达式2.3.8增1、减1运算符及表达式为了方便用户进行某些单一的增1、减1操作,C++语言中提供了类似于汇编语言中的加1、减1指令的加1运算符(++)和减1运算符(−−)。增1、减1运算符是单目运算符,其操作数仅限定为左值表达式。其优先级是第2级;其结合性是从右至左结合。由增1、减1运算符和左值表达式构成的表达式为增1、减1表达式。上一页下一页返回2.3运算符与表达式使用增1、减1运算符需注意:(1)增1、减1运算的操作对象只许是左值表达式——即只允许是变量,而不允许是常量或表达式、函数调用等。这一点很易理解,因为增1、减1操作是将操作对象的值加1或减1后送回原存储单元,而常量、表达式等没有对应的存储单元。(2)增1、减1运算符的操作数通常是整型或字符型,因为上述类型的数据操作后其值是确定的;而实型数操作前后并不能确保其差的绝对值是1。上一页下一页返回2.3运算符与表达式(3)增1、减1操作又分前置和后置操作两类,它们有质的区别。(4)增1、减1运算是除了第1级外优先级最高的。但是后置操作则要注意:先引用其值参加运算,再做后置操作。(5)注意增1、减1操作的副作用。所谓“副作用”是指某些变量依赖于表达式的计值方法而发生的改变。上一页下一页返回2.3运算符与表达式2.3.9其他运算符及表达式1.逗号运算符“,”运算符又称顺序运算符,它用逗号分开若干个表达式。计算时,按照每个子表达式从左到右的先后次序依次计算它们的值,最后一个表达式的值是整个逗号运算表达式的值。逗号运算符主要用于下述几种场合:(1)在变量定义时,用于分隔同数据类型的变量。(2)在函数的参数表中,用于分隔各个参数。上一页下一页返回2.3运算符与表达式(3)在只允许出现一个表达式的上下文中,用于分隔出两个或更多个表达式。这些表达式按逗号的结合规则从左向右依次计值,最后结果的数据类型和值是最右边的表达式的数据类型和值。其实,在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值。逗号表达式也常用于循环语句中分隔各个表达式。上一页下一页返回2.3运算符与表达式2.检测类型长度运算符“sizeof”是检测类型长度运算符,用于计算某种类型对象在内存中所占的字节数。其使用格式为:sizeof(类型名或表达式)3.类型转换运算符类型转换运算符又称为数据类型强制转换运算,它将一种类型的数据转换为另一种类型的数据。其格式为:数据类型(表达式)或:(数据类型)表达式或:(数据类型)(表达式)上一页下一页返回2.3运算符与表达式4.圆括号运算符圆括号运算能够改变运算的优先级,使括号内的运算优先进行。在编程过程中,使用运算符比较多,往往不容易记住每一个运算符的优先级。为了使表达式中每一个运算次序能够按所希望的次序进行,可以使用圆括号进行限定。即使圆括号可能是多余的也没关系,因为它能够使表达式更清晰,提高了程序的可读性。上一页返回2.4C++运算符的优先级和结合性所谓运算符的优先级就是一个运算符在一个表达式中运算的先后次序。C++语言的优先级可以分为从最高级的1级到最低级的15级。在一个表达式中具有多个同优先级运算符时,该怎样进行运算,这就是结合性问题。所谓的结合性就是运算符与运算项的结合方向。结合性有从左到右的左结合,也有从右到左的右结合。返回2.5数据类型的转换C++语言是强类型语言。对于每一个操作,C++系统都要做类型检查。对于类型不符合的,或产生错误信息,或做类型转换。C++语言的数据类型转换可以分为自动转换和强制转换。2.5.1数据类型的自动转换数据类型的自动转换又可以分为算

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论