C++语言基础(课堂PPT)_第1页
C++语言基础(课堂PPT)_第2页
C++语言基础(课堂PPT)_第3页
C++语言基础(课堂PPT)_第4页
C++语言基础(课堂PPT)_第5页
已阅读5页,还剩491页未读 继续免费阅读

下载本文档

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

文档简介

1、.1盐城工学院 惠为君.2C+概述 C+的特点 发展历史和未来 (CC+(AT&T)Java(SUN)C#(MS) 与其它语言比较(7点): 面向对象的概念:数据的封装和隐藏、继承、多态 VC上机过程.3C+的字符集的字符集26个个小写字母小写字母 abcdefghijklmnopqrstuvwxyz 26个个大写字母大写字母 ABCDEFGHIJKLMNOPQRSTUVWXYZ 10个个阿拉伯数阿拉伯数字字 0 1 2 3 4 5 6 7 8 9 其他符号其他符号 + - * / = , . _ : ; ? | ! # % & () 空格空格 C+语言使用下列基本字符来构成词

2、法单位:语言使用下列基本字符来构成词法单位:结束.4第二章: 数据类型 运算符 表达式 2.1 VC+ 的数据类型计算机所处理的数据以一定形式存放在内计算机所处理的数据以一定形式存放在内存中,数据的存储方式以及能够进行的合存中,数据的存储方式以及能够进行的合法运算都与数据类型直接相关。法运算都与数据类型直接相关。C+的特的特点之一就是提供了丰富的数据类型,以便点之一就是提供了丰富的数据类型,以便处理各种不同的数据。处理各种不同的数据。数据类型总是与运数据类型总是与运算封装在一起,本质上是面向对象的。算封装在一起,本质上是面向对象的。本本章将简要介绍章将简要介绍C+中的数据类型及相关运中的数据类

3、型及相关运算,以及常量、变量、表达式、语句等,算,以及常量、变量、表达式、语句等,最后介绍简单的输入输出方法。最后介绍简单的输入输出方法。.5 2.1.1 关键字数据类型说数据类型说明符与修饰明符与修饰符符bool char wchar_t class const double enum float int long short signed struct union unsigned void volatile存储类型说存储类型说明符明符auto extern inline register static访问说明符访问说明符friend private protected public其它说

4、明符其它说明符asm explicit namespace operator template this typedef typename using virtual 语句与标号语句与标号break case catch continue default do else for goto if return switch throw try while 运算符及逻运算符及逻辑值辑值delete false new sizeof true.6 还有一些关键字本书未介绍:还有一些关键字本书未介绍: const_cast dynamic_cast reinterpret_cast static_ca

5、st export mutable typeid 下面可用一些关键字代替逻辑运算符:下面可用一些关键字代替逻辑运算符:and and_eq bitand bitorCompl not or or_eqXor xor_eq not_eq.72.1.2 标识符标识符标识符(标识符(IdentifierIdentifier,ID ID )是程序员定是程序员定义的义的“单词单词”,用来给变量、常量、数据类型、,用来给变量、常量、数据类型、函数等命名。函数等命名。合法标识符合法标识符由由字母或下划线字母或下划线开始开始,由,由字母、字母、数字、下划线数字、下划线组成,其有效组成,其有效长度为长度为1 1

6、3131个字个字符符,长度超过,长度超过3131个字符者只识别个字符者只识别前前3131个字符个字符,VC+VC+标识符长度为标识符长度为1 1247247个字符。个字符。建议使用有一定含义的英文单词或拼音序建议使用有一定含义的英文单词或拼音序列作标识符,以提高列作标识符,以提高可读性可读性;另外尽量不用下;另外尽量不用下划线或双下划线打头,以免与系统定义的关键划线或双下划线打头,以免与系统定义的关键字冲突。字冲突。ok.8标识符标识符例例: 判断下面哪些是合法的标识符:判断下面哪些是合法的标识符: MyFileSalary 94amountvoid94SalarySalary94$amoun

7、tf3.5Num_of_Student2.1.2结束.92.1.3 标点符号标点符号标点符号包括标点符号包括:#、( )、 ,、,、 :、:、 ;、;、 、 等。等。 标点符号的作用标点符号的作用:有一定的语法意义。如字符和字符串有一定的语法意义。如字符和字符串常量分别用常量分别用 和和 “ ”引起来。引起来。对语法符号起分隔作用。如对语法符号起分隔作用。如 ;等;等2.1.3结束.102.1.5 C+的基本数据类型的基本数据类型图图2-1 C+的的数据结构数据结构实实 型型 float双精度型双精度型 doubleC+的数的数据类型据类型基本数据基本数据类型类型非基本数非基本数据类型据类型数

8、组数组 type 指针指针 type *结构结构 struct联合联合 union枚举枚举 enum类类 class整整 型型 int字符型字符型 char逻辑型逻辑型 bool无值型无值型 void实实 型型ok.11 C+C+对基本数据类型也分别进行了封装,称对基本数据类型也分别进行了封装,称为为内置数据类型内置数据类型,内置数据类型不仅定义了数据,内置数据类型不仅定义了数据类型,类型,还定义了还定义了常用操作常用操作。本节仅介绍各种基本。本节仅介绍各种基本数据类型的定义,常用操作将在后面介绍。数据类型的定义,常用操作将在后面介绍。 C+C+为强类型语言,所有数据的使用严格遵从为强类型语言

9、,所有数据的使用严格遵从“先说明后使用先说明后使用”的原则,以便编译器进行编译。的原则,以便编译器进行编译。 整型整型用来存放整数,整数(有符号的整数)用来存放整数,整数(有符号的整数)在内存中存放的是它的补码,无符号数没有符在内存中存放的是它的补码,无符号数没有符号位,存放的就是原码。整数占用的字节数与号位,存放的就是原码。整数占用的字节数与机型有关,机型有关,3232位机上占用位机上占用4 4个字节。个字节。 .12 字符型字符型用来保存字符,存储的是该字符的用来保存字符,存储的是该字符的ASCIIASCII码,码,占用一个字节。如大写字母占用一个字节。如大写字母A A的的ASCIIASC

10、II码为码为6565,在对应的,在对应的一个字节中存放的就是一个字节中存放的就是6565。字符型数据从本质上说也是。字符型数据从本质上说也是整数,可以是任何一个整数,可以是任何一个8 8位二进制整数。位二进制整数。 由于汉语系字符很多,用由于汉语系字符很多,用ASCIIASCII字符集处理远远不够,字符集处理远远不够,因此又创立了双字节字符集(因此又创立了双字节字符集(DBCSDBCS:double-byte double-byte character setcharacter set),每个字符用两个字节来编码。为便于),每个字符用两个字节来编码。为便于软件的国际化,国际上一些知名公司联合制

11、定了新的宽软件的国际化,国际上一些知名公司联合制定了新的宽字节字符标准字节字符标准UnicodeUnicode。该标准中所有字符都是双字。该标准中所有字符都是双字节的,不同的语言和字符集分别占用其中一段代码。这节的,不同的语言和字符集分别占用其中一段代码。这种用统一编码处理西文、中文及其它语言符号,就是种用统一编码处理西文、中文及其它语言符号,就是unicodeunicode码。码。C+C+同时也支持宽字符类型(同时也支持宽字符类型(wchar_twchar_t),或),或称双字节字符型称双字节字符型。 .13 实型实型和和双精度型双精度型都用来存放实数,两者表示的实数都用来存放实数,两者表示

12、的实数精度不同。实数在内存中以规范化的浮点数存放,包括精度不同。实数在内存中以规范化的浮点数存放,包括尾数、数符和阶码。数的精度取决于尾数的位数,尾数、数符和阶码。数的精度取决于尾数的位数,32位位机上实型为机上实型为23位(因规范化数的数码最高位恒为位(因规范化数的数码最高位恒为1,不必,不必存储,实际为存储,实际为24位),双精度为位),双精度为52位。位。 逻辑型逻辑型也称也称布尔型布尔型,其取值为,其取值为true(逻辑真)和(逻辑真)和false(逻(逻辑假),存储字节数在不同编译系统中可能有所不同,辑假),存储字节数在不同编译系统中可能有所不同,VC+6.0中为中为1个字节。布尔型

13、在运算中可以和整型相互转个字节。布尔型在运算中可以和整型相互转化,化,false对应为对应为0,true对应为对应为1或非或非0无值型无值型主要用来说明函数的返回值类型,将在函数一章中主要用来说明函数的返回值类型,将在函数一章中具体介绍。具体介绍。 基本数据类型还可以加上一些修饰词,包括:基本数据类型还可以加上一些修饰词,包括:signed(有符号)、(有符号)、unsigned(无符号)、(无符号)、long(长)、(长)、short(短)。参见下表:(短)。参见下表:.142. 2结束 类类 型型名名 称称占用字节数占用字节数取取 值值 范范 围围bool布尔型布尔型 true, fals

14、e(signed) char有符号字符型有符号字符型1-128 127unsiged char无符号字符型无符号字符型10 255(signed) short (int)有符号短整型有符号短整型2-32768 32767unsigned short (int)无符号短整型无符号短整型20 65535(signed) int (signed)有符号整型有符号整型4-231 (231-1)unsigned (int)无符号整型无符号整型40 (232-1)(signed) long (int)有符号长整型有符号长整型4-231 (231-1)unsigned long (int)无符号长整型无符号

15、长整型40 (232-1)float实型实型4-1038 1038double双精度型双精度型8-10308 10308long double长双精度型长双精度型8-10308 10308void无值型无值型0无值无值VC+中所有基本数据类型所有基本数据类型.152.1.6 常量 在程序的执行过程中,值保持不变的量称为 常量字面常量字面常量,指程序中直接给出的量;,指程序中直接给出的量;常量的值在程序执行过程中保持不变;并常量的值在程序执行过程中保持不变;并且且存储在程序区存储在程序区,而非数据区;,而非数据区;根据取值和表示方法的不同,可分为以下根据取值和表示方法的不同,可分为以下几种:几种

16、:.16a. a. 整形常量整形常量d. d. 字符串常量字符串常量c. c. 字符型常量字符型常量b. b. 实型常量实型常量ok.17a整型常量十进制表示法十进制表示法八进制表示法八进制表示法十六进制表示法十六进制表示法其他表示法其他表示法即整数,可以有多种表示方法:ok.18 整数的十进制表示方法十进制表示与我们熟悉的书写方式相同。十进制表示与我们熟悉的书写方式相同。如如15 -24ok.19 整数的八进制表示 八进制表示八进制表示以以0 0开始,由数字开始,由数字0 0 7 7组成组成,用来,用来表示一个八进制数。表示一个八进制数。如:如:012012 / /八进制数八进制数1212,

17、即十进制数,即十进制数1010-0655-0655/八进制数八进制数-655-655,即十进制数,即十进制数-429-429ok.20 整数的十六进制表示 十六进制十六进制以以0X0X(大小写均可)开始,由数(大小写均可)开始,由数字字0 0 9 9和字母和字母A A F F(大小写均可)组成(大小写均可)组成,用来,用来表示一个十六进制数。表示一个十六进制数。以下是一些以下是一些常整数常整数的例子:的例子:0 x32A /0 x32A /十六进制数十六进制数32A32A,即十进制数,即十进制数810810-0 x2fe0 /-0 x2fe0 /十六进制数十六进制数-2fe0-2fe0, /即

18、十进制数即十进制数-12256-12256ok.21整数的其他表示方法 整型常量还可以表示整型常量还可以表示长整数长整数和和无符号整数无符号整数。长整型常数以长整型常数以 L L 或或 l l 结尾,无符号常整数以结尾,无符号常整数以 U U 或或 u u 结尾,以结尾,以 U LU L 或或 L UL U(大小写均可)(大小写均可)结尾则可表示无符号长整型常数。结尾则可表示无符号长整型常数。例如:例如:-84L-84L/十进制长整数十进制长整数-84-84026U026U/八进制表示的无符号整数八进制表示的无符号整数26260X32LU /0X32LU /十六进制表示的无符号长整型数十六进制

19、表示的无符号长整型数3232。整数 结束 .22b实型常量( (1)1)一般形式一般形式与平时书写形式相同,与平时书写形式相同,由数字由数字 0 0 9 9和小数点组成和小数点组成。例如:。例如:0.23 -125.76 0.0 .46 -35.0.23 -125.76 0.0 .46 -35.(2) (2) 指数形式(也称为科学表示法)指数形式(也称为科学表示法)表示为表示为尾尾数乘以数乘以1010的次方形式,由的次方形式,由尾数尾数、E E或或e e和和阶数阶数组组成成。指数形式要求在。指数形式要求在E E或或e e前面的前面的尾数部分必须尾数部分必须有数字有数字,后面的,后面的指数部分必

20、须为整数指数部分必须为整数。 例例 : : 判断下列表示是否合法判断下列表示是否合法123E12 -.34e-2 E4 1.43E3.5 包含小数点和包含小数点和1010的幂的数为实型常量,有的幂的数为实型常量,有两种表示方法:两种表示方法:实数实数 结束结束.23c字符型常量 字符常量是用单引号引起来的单个字符字符常量是用单引号引起来的单个字符。在。在内存中保存的是字符的内存中保存的是字符的ASCIIASCII码值。在所有字符码值。在所有字符中,有些是可显示字符,通常就用单引号引起中,有些是可显示字符,通常就用单引号引起来表示:来表示:a a /字符字符a a /字符字符 44/字符字符4

21、4 /空格字符空格字符有些是特殊情况字符,如不可显示的字符等,有些是特殊情况字符,如不可显示的字符等,c+c+使用使用转义序列转义序列表示方法,如表示方法,如(祥见表祥见表2-32-3,此处略):此处略):n n /换行换行 / / 字符字符 字符常字符常 结束结束 .24d. 字符串常量字符串常量与字符型常量的区别字符串常量与字符型常量的区别字符串常量字符串常量aa占两个字节,存放占两个字节,存放aa和和 0 0,值为,值为0 x61000 x6100字符型常量字符型常量aa占一个字节,存放占一个字节,存放aa,值为,值为0 x610 x612.3.2结束结束用双引号引起来的若干个字符称为字

22、符串常量用双引号引起来的若干个字符称为字符串常量。例如例如:I am a Chinese.,123, a ,:I am a Chinese.,123, a , .252 标识符常量及常量说明符const用常量说明符用常量说明符constconst给字面常量起个名字(标识符),给字面常量起个名字(标识符),这个标识符就称为这个标识符就称为标识符常量标识符常量;因为标识符常量的说明和引用形式很像变量,所以也因为标识符常量的说明和引用形式很像变量,所以也称称常变量常变量;例如:;例如:constconst float PI=3.14159; float PI=3.14159;const const

23、int Number_of_Student=100; int Number_of_Student=100;常变量必须也只能在说明时进行初始化;常变量必须也只能在说明时进行初始化;常变量初始化之后,不允许再被赋值;常变量初始化之后,不允许再被赋值;常变量必须先说明后使用;常变量必须先说明后使用;常变量存储在数据区,并且可以按地址访问,编译时常变量存储在数据区,并且可以按地址访问,编译时系统对常变量进行类型检查。系统对常变量进行类型检查。C+C+建议使用常变量,而尽量不使用字面常量。建议使用常变量,而尽量不使用字面常量。2.3.3 结束结束.262.1.7 变 量1 1 变量说明变量说明 2 2

24、变量赋初值变量赋初值 变量变量,在程序中是指可以改变值的量;,在程序中是指可以改变值的量;变量必须用标识符进行标识,称为变量必须用标识符进行标识,称为变量名变量名;变量有变量有类型类型之分,如整形变量、字符变量等;之分,如整形变量、字符变量等;任何变量都必须任何变量都必须先说明后使用先说明后使用;一是便于编译;一是便于编译程序为变量分配空间,二是便于编译时进行语程序为变量分配空间,二是便于编译时进行语法检查;法检查;变量使用的第一步,是给变量赋变量使用的第一步,是给变量赋初始值初始值;ok.27变量说明 在在C+C+中,变量说明的一般格式为:中,变量说明的一般格式为:存储类型存储类型数据类型数

25、据类型 变量名变量名1 1, ,变量名变量名2, 2, , ,变量名变量名n n; 下面是变量说明的几个例子:下面是变量说明的几个例子:int i, j, k; /说明三个整型变量说明三个整型变量i, j, kfloat x, y, z; /说明三个实型变量说明三个实型变量x, y, zchar c1, c2; /说明两个字符型变量说明两个字符型变量c1, c2double dx; /说明一个双精度型变量说明一个双精度型变量dx 变量说明 结束 .28变量赋初值(1 1)变量说明时直接赋初值。变量说明时直接赋初值。例如:例如:int a=3, b=4, c=5;int a=3, b=4, c=

26、5;float x=3.0float x=3.0;(2 2)用赋值语句赋初值。用赋值语句赋初值。严格的说,只有前严格的说,只有前者可称赋初值者可称赋初值例如:例如:float x, e;float x, e;x=3.5; x=3.5; e=2.71828;e=2.71828;结束 给变量赋初值称为初始化,有两种方法:给变量赋初值称为初始化,有两种方法:.292.2 基本运算符 对常量和变量进行运算是通过运算符来实现的对常量和变量进行运算是通过运算符来实现的. 常量和常量和变量通过运算符组成变量通过运算符组成C+表达式表达式,由表达式再组成由表达式再组成C+语句语句. 运算符是完成对运算符是完成

27、对常量和变量进行运算的符号常量和变量进行运算的符号. 把参与运把参与运算的对象称为操作数算的对象称为操作数.按照要求的操作数的个数,运算符分为按照要求的操作数的个数,运算符分为单目单目(一元)运算(一元)运算符、符、双目双目(二元)运算符和(二元)运算符和三目三目(三元)运算符。(三元)运算符。单目运单目运算符算符只对一个操作数运算,如负号运算符只对一个操作数运算,如负号运算符“ ”等;等;双目运双目运算符算符要求有两个操作数,如乘号运算符要求有两个操作数,如乘号运算符“*”等;等;三目运算三目运算符符要求有三个操作数,三元运算符只有一个要求有三个操作数,三元运算符只有一个“?:”。.301.

28、算术运算符优先级优先级运算符运算符名名 称称3+正,单目正,单目 -负,单目负,单目5*乘,双目乘,双目 /除,双目除,双目 %求余,双目求余,双目6+加,双目加,双目 -减,双目减,双目ok.31运算符重载运算符重载:当两个操作数均为整数时,当两个操作数均为整数时,* *和和/ /重载为重载为整乘整乘和和整除整除,结果为整数,除法运算后舍去小数取整。如:结果为整数,除法运算后舍去小数取整。如:5/45/4/结果为结果为1 1,整数,整数当两个操作数均为整数,当两个操作数均为整数,%定义为定义为求余求余运算,也运算,也称求模运算,结果为两个整数相除后的余数。如称求模运算,结果为两个整数相除后的

29、余数。如果两个整数中有负数,则先用两数绝对值求余,果两个整数中有负数,则先用两数绝对值求余,最后结果的最后结果的符号与被除数相同符号与被除数相同。例如。例如6%3/结果为结果为06%7/结果为结果为67%6/结果为结果为1.32 C+ C+中算术运算应注意数据溢出问题,即运算中算术运算应注意数据溢出问题,即运算结果超出对应数据类型的表示范围。结果超出对应数据类型的表示范围。编译程序只会编译程序只会对除法运算时除数为对除法运算时除数为0 0这种情况提示出错,这种情况提示出错,而特别而特别容易溢出的整数的加、减和乘法运算产生溢出的情容易溢出的整数的加、减和乘法运算产生溢出的情况,系统不作为错误处理

30、,程序将继续执行并产生况,系统不作为错误处理,程序将继续执行并产生错误的计算结果。因此,程序设计者必须在程序中错误的计算结果。因此,程序设计者必须在程序中解决检查并处理整数溢出问题。解决检查并处理整数溢出问题。 只要有一个操作数是实数,两个操作数均转只要有一个操作数是实数,两个操作数均转换为换为doubledouble型,型,*和和/重载为普通的重载为普通的乘和除乘和除,结,结果果是实数是实数:5/4.05/4.0/结果为结果为1.251.25,实数,实数.332.关系运算符和逻辑运算符ok 关系运算符都是二元运算符,包括:关系运算符都是二元运算符,包括: (大于)、(大于)、(不小于)、(不

31、小于)、 (小于)、(小于)、(不小于)、(不小于)、= = =(等于)和!(等于)和!= =(不等于)。关系运算符完成两个操作数大小的比较,结(不等于)。关系运算符完成两个操作数大小的比较,结果为逻辑值果为逻辑值true(true(真真) )或或falsefalse(假)(假)。每种。每种可比较大小可比较大小的数的数据类型,都据类型,都重载重载了关系运算符。不同类型,自动转换为同了关系运算符。不同类型,自动转换为同一类型后,采用对应关系运算符进行比较。一类型后,采用对应关系运算符进行比较。在在C+中这两个逻辑值与整数之间有一个对应关系,真对中这两个逻辑值与整数之间有一个对应关系,真对应应1,

32、假对应,假对应0;反过来,;反过来,0对应假,非对应假,非0整数对应真。整数对应真。所所以关系运算结果可以作为整数参与算术运算、关系运算、以关系运算结果可以作为整数参与算术运算、关系运算、逻辑运算及其他运算。逻辑运算及其他运算。.342.关系运算符和逻辑运算符设有定义设有定义 float a=3.2;int b=5; ;则则: : 3ab/结果是结果是?根据右结合根据右结合原则其运算原则其运算过程如下:过程如下:a5b3.23F, 即即0F即即0.35优优先先级级运运算算符符名名 称称语语 义义2!逻辑非逻辑非, 单目单目操作数的值为真,则结操作数的值为真,则结果为假果为假;12&逻辑

33、与逻辑与,双目双目当两个操作数全为真时,当两个操作数全为真时,结果为真,否则为假结果为真,否则为假;13|逻辑或逻辑或,双目双目两个操作数中有一个为两个操作数中有一个为真,则结果为真真,则结果为真;逻辑运算符逻辑运算符.36 逻辑运算符用来进行逻辑运算。其操作数和运逻辑运算符用来进行逻辑运算。其操作数和运算结果均为算结果均为逻辑量逻辑量。运算结果同样可以作为一个。运算结果同样可以作为一个整整数数参与其他运算。参与其他运算。 由于由于逻辑值逻辑值和和整数整数之间的之间的对应关系,对应关系,也允许也允许整型整型和和字符型字符型操作数进行操作数进行逻辑运算逻辑运算:21&021&0/

34、逻辑与,逻辑与,2121与与0 0,结果为假:,结果为假:0 021|021|0/逻辑或,逻辑或,2121或或0 0,结果为真:,结果为真:1 1!21!21/逻辑非,逻辑非,2121的非,结果为假:的非,结果为假:0 0逻辑运算符逻辑运算符.37 位运算符(1)按位取反运算符)按位取反运算符“” (2)左移运算符)左移运算符“” (4)按位与运算符)按位与运算符“&” (5)按位或运算符)按位或运算符“|” (6)按位异或运算符)按位异或运算符“” okc+c+语言提供字位运算,它对操作数的各个位进行操作。语言提供字位运算,它对操作数的各个位进行操作。.38(1 1)按位取反运算符)

35、按位取反运算符“”将操作数的每个二进制位取反,即将操作数的每个二进制位取反,即1 1变为变为0 0,0 0变为变为1 1。例如,。例如,整数整数a a的值为的值为1001101110011011,则,则aa的值为的值为0110010001100100。(2 2)左移运算符)左移运算符“”运算一般格式为:运算一般格式为:ana”与左移运算符类同,将左操作数向右移动右操作数指定的与左移运算符类同,将左操作数向右移动右操作数指定的二进制位数,忽略移位后的小数部分,并在高位补二进制位数,忽略移位后的小数部分,并在高位补0 0。一。一个整数右移个整数右移n n位相当于位相当于除以除以2 2的的n n次方

36、,但比除法快。次方,但比除法快。 在在VC+6.0VC+6.0中有符号数右移时高位补符号位,严格对应除中有符号数右移时高位补符号位,严格对应除法。法。以上三种单目运算不影响数据本身的值,而是只产生一以上三种单目运算不影响数据本身的值,而是只产生一个中间量,这个中间量被引用后即不再存在。个中间量,这个中间量被引用后即不再存在。 .39(4 4)按位与运算符)按位与运算符“&”&”将两个操作数的对应位逐一进行按位逻辑与运算。运算规则将两个操作数的对应位逐一进行按位逻辑与运算。运算规则为:对应位均为为:对应位均为1 1时,该位运算结果为时,该位运算结果为1 1;否则为;否则为0 0。

37、例如:。例如:a 01001101a 01001101b 00001111b 00001111a & b 00001101a & b 00001101该运算可用来将整数的某些位置该运算可用来将整数的某些位置0 0,而保留所需要的位,上例,而保留所需要的位,上例保留了低四位。保留了低四位。(5 5)按位或运算符)按位或运算符“|”|”将两个操作数的对应位逐一进行按位逻辑或运算。运算规则将两个操作数的对应位逐一进行按位逻辑或运算。运算规则为:只要有一个数对应位为为:只要有一个数对应位为1 1,该位运算结果即为,该位运算结果即为1 1;两个数;两个数对应位均为对应位均为0 0,该位结

38、果为,该位结果为0 0。例如:。例如:a 01001101a 01001101b 00001111b 00001111a | b 01001111a | b 01001111该运算符可用来将整数的某些位置该运算符可用来将整数的某些位置1 1。上例高四位不变,低四。上例高四位不变,低四位全位全1 1。.40(6 6)按位异或运算符)按位异或运算符“”将两个操作数的对应位逐一进行按位异或运算。运算规则为:将两个操作数的对应位逐一进行按位异或运算。运算规则为:当对应位的值不同时,该位运算结果为当对应位的值不同时,该位运算结果为1 1,否则为,否则为0 0。例如:。例如:a 01001101a 010

39、01101b 00001111b 00001111a b 01000010a b 01000010该运算符可用来将一个整数的某些位取反,或将整型变量的该运算符可用来将一个整数的某些位取反,或将整型变量的值置值置0 0(将整型变量与自身按位异或)。上例低四位取反,(将整型变量与自身按位异或)。上例低四位取反,高四位不变。高四位不变。需要说明的一点是,以上例子中的整数都只取了低需要说明的一点是,以上例子中的整数都只取了低8 8位一个位一个字节。字节。.414.赋值运算符ok 将数据存放到相应存储单元中称为将数据存放到相应存储单元中称为赋值赋值,如果,如果该单元中已有值,赋值操作以新值取代旧值;从该

40、单元中已有值,赋值操作以新值取代旧值;从某个存储单元中取出数据使用,称为引用,引用某个存储单元中取出数据使用,称为引用,引用不影响单元中的值,即一个量可以多次引用。不影响单元中的值,即一个量可以多次引用。常常量量只能引用,不能赋值。只能引用,不能赋值。 赋值通过赋值运算符赋值通过赋值运算符“=”来完成,其意义是将来完成,其意义是将赋值号右边的值送到左边变量所对应的单元中。赋值号右边的值送到左边变量所对应的单元中。赋值号不是等号,它具有方向性赋值号不是等号,它具有方向性。 .42C+C+将变量名代表的单元称为将变量名代表的单元称为 “左值左值”,而将变,而将变量的值称为量的值称为“右值右值”。

41、左值必须是内存中一个左值必须是内存中一个可以访问且可以合法修改的对象可以访问且可以合法修改的对象,因此只能是变,因此只能是变量名,量名,而不能是常量或表达式而不能是常量或表达式。4.赋值运算符例如下面的赋值运算是错误的:例如下面的赋值运算是错误的:3.1415926=pi;/左值不能是常数左值不能是常数x+y=z;/左值不能是表达式左值不能是表达式const int N=30;N=40;/左值不能是常变量左值不能是常变量.435.自增自减运算运算分前置和后置两种,运算分前置和后置两种,前置是先增减后引用前置是先增减后引用,即先,即先对变量自加或自减,用新的值参与其他运算;对变量自加或自减,用新

42、的值参与其他运算;后置则后置则是先引用后增减是先引用后增减,即用变量原来的值参与其他运算,即用变量原来的值参与其他运算,然后再对变量进行自加或自减然后再对变量进行自加或自减, ,例如:例如:int i=5, j=5, m, n;int i=5, j=5, m, n;m=i+;m=i+; / /后置;相当于后置;相当于m=i; i=i+1; m=i; i=i+1; / /结果:结果:i i的值为的值为6 6,m m的值为的值为5 5; ;n=+j;n=+j; / /前置;相当于前置;相当于j=j+1;n=j;j=j+1;n=j; / /结果:结果:j j的值为的值为6 6,n n的值为的值为6

43、6; ;意义:使变量当前值加意义:使变量当前值加1 1或减或减1 1,再赋给该变量。再赋给该变量。要求:操作数只能是要求:操作数只能是变量变量,不能是常量或表达式;,不能是常量或表达式;ok.44 sizeof( ) 运算符 用于计算一个操作数类型或一个变量的字用于计算一个操作数类型或一个变量的字节数。一般格式为:节数。一般格式为:sizeof (sizeof (数据类型数据类型) ) 或或 sizeof(sizeof(变量名变量名) ) 例如:例如:sizeof(int) 值为值为4 sizeof( float) 值为值为4double x; sizeof( x) 值为值为8 结束结束.45

44、2.2.2 表达式1 算术表达式算术表达式 2 关系表达式关系表达式 3 逻辑表达式和逻辑表达式求值的优化逻辑表达式和逻辑表达式求值的优化 4 赋值表达式与复合赋值表达式赋值表达式与复合赋值表达式 5 逗号表达式逗号表达式 ok.461.算术表达式使用时注意:使用时注意:1 1、表达式中每个变量都有确定的值时才能进、表达式中每个变量都有确定的值时才能进行表达式求值;行表达式求值;2 2、考虑到算术运算溢出和精度问题,应避免:、考虑到算术运算溢出和精度问题,应避免:(1 1)两个很接近的数直接相减;)两个很接近的数直接相减;(2 2)除数是一个很小的数;)除数是一个很小的数;(3 3)整数的连续

45、乘运算。)整数的连续乘运算。ok由算术运算符连接的表达式称为算术表达式由算术运算符连接的表达式称为算术表达式,例如:例如:a+b*3 ;.472.关系表达式例如:例如:abcabc / /* *等同于等同于(ab)c(ab)c,先求,先求ab ab 的值,的值, 再将结果再将结果0 0或或1 1与与c c比较大小比较大小* */ /a+bc+da+bc+d / /* *等同于等同于(a+b)(c+d)(a+b)(c+d), 结果为结果为0 0或或1 1* */ /y=aby=ab / /* *计算计算abab的值的值0 0或或1 1 赋给赋给y y,y y的值为的值为0 0或或1 1* */

46、/由关系运算符连接的表达式。值为由关系运算符连接的表达式。值为truetrue或或falsefalse。ok.483.逻辑表达式和逻辑表达式求值的优化由逻辑运算符连接的表达式称为逻辑表达式。逻辑表达式的由逻辑运算符连接的表达式称为逻辑表达式。逻辑表达式的值为值为truetrue或或falsefalse。这个值可对应整数。这个值可对应整数1 1或或0 0参与其他运算。参与其他运算。ok已知已知: int a=10, b=20, c=30;float x=1.8, y=2.4; ay|ab-!c按按优先级优先级与与结合性结合性,其,其求值顺序求值顺序等同于:等同于:(ay)|(a(b-(!c)t1

47、=1 t2=0t4=0 -&t3=0t5=bt6=1| 得整个表达式的值为:得整个表达式的值为:1 1.493.逻辑表达式和逻辑表达式求值的优化在求逻辑表达式值的过程中,一旦表达式的在求逻辑表达式值的过程中,一旦表达式的值能够确定,就不再逐步进行下面的运算。值能够确定,就不再逐步进行下面的运算。称为称为“求值优化求值优化”。已知已知: int a=10, b=20, c=30;求:求: ab | c+ /结果以及结果以及a,b,c的值的值t1=1整个表达式的值为整个表达式的值为 1 1可见可见: : 表达式表达式 c+ c+ 已不需要计算已不需要计算所以所以: : c不变仍为不变仍为

48、30编程人员在使用逻辑运算时应当加以小心,优化计算固然提编程人员在使用逻辑运算时应当加以小心,优化计算固然提高了运算效率,但可能产生副作用。高了运算效率,但可能产生副作用。所谓副作用,就是出乎所谓副作用,就是出乎设计人员的意料,得到预想不到的结果。设计人员的意料,得到预想不到的结果。.504.赋值表达式与复合赋值表达式 赋值表达式的格式为:赋值表达式的格式为: 变量变量 = = 表达式表达式 例如:例如:x=5+6;x=5+6;a=b=c=d+1a=b=c=d+1; ; 在在C+C+中,所有的双目算术运算符和位运算符均可与中,所有的双目算术运算符和位运算符均可与赋值运算符组合成一个单一运算符,

49、称为赋值运算符组合成一个单一运算符,称为复合运赋值复合运赋值算符算符。包括以下。包括以下1010个:个:+ = = * = / = % = = &= | = =复合赋值运算符的要求与格式与赋值运算符完全相同,复合赋值运算符的要求与格式与赋值运算符完全相同,表示为:表示为: 变量变量 复合赋值运算符复合赋值运算符 表达式表达式 它等同于它等同于 变量变量 = = 变量变量 运算符运算符 表达式表达式 例如:例如:x+=5x+=5 等同于:等同于:x=x+5x=x+5ok.51 逗号表达式 C+中,逗号既是分隔符,又是运算符,中,逗号既是分隔符,又是运算符,用逗号连接起来的表达式称为逗号表

50、达式。用逗号连接起来的表达式称为逗号表达式。 一般格式为:一般格式为:表达式表达式1,表达式,表达式2,表达式,表达式n 逗号表达式中的每一个表达式都会被运算,逗号表达式中的每一个表达式都会被运算,整个逗号表达式的值为最后一个表达式的值整个逗号表达式的值为最后一个表达式的值。例如:例如:a=(x=3,x+=6,5+6);/a=11 x=92.5.2结束结束.522.2.3不同类型数据的混合运算和赋值时的类型转换1 1 不同类型数据的混合运算不同类型数据的混合运算 2 2 赋赋 值值 类类 型型 转转 换换 ok运算过程中,当某个二元运算符两边的操作数类型不同但运算过程中,当某个二元运算符两边的

51、操作数类型不同但属于类型相容时,系统先将精度低的操作数变换到与另一属于类型相容时,系统先将精度低的操作数变换到与另一操作数精度相同,而后再进行运算。操作数精度相同,而后再进行运算。 所谓类型相容,指的就是类型不同但系统可以所谓类型相容,指的就是类型不同但系统可以自动进行转换。自动进行转换。当赋值号的左值和右值类型不一致但属于类型相容时,当赋值号的左值和右值类型不一致但属于类型相容时,由系统自动进行类型转换。由系统自动进行类型转换。 .53具体规则如下:具体规则如下:(1 1)字符字符可以作为可以作为整数整数参与数值运算,参与数值运算,整数值为其整数值为其ASCIIASCII码码。(2 2)操作

52、数为字符或短整型时,系统自动变换成)操作数为字符或短整型时,系统自动变换成整型整型。(3 3)操作数为实型时,系统自动变换成)操作数为实型时,系统自动变换成双精度型双精度型。(4 4)其余情况,当两操作数类型不同时,将精度低(或表示范)其余情况,当两操作数类型不同时,将精度低(或表示范围小)的操作数的数据类型变换到与另一操作数类型相同再进围小)的操作数的数据类型变换到与另一操作数类型相同再进行运算行运算 例如有变量例如有变量: :char c1, c2; int i1, i2; float x1, x2;char c1, c2; int i1, i2; float x1, x2;则表达式则表达

53、式x2=c1x2=c1* *i1+c1i1+c1* *x1+c1x1+c1* *c2c2的求值过程为:将的求值过程为:将c1c1转换成整型,完成转换成整型,完成c1c1* *i1i1,结果表示为,结果表示为t1t1;将;将c1c1和和x1x1均转换成双精度型,完成均转换成双精度型,完成c1c1* *x1x1,结果表示为,结果表示为t2t2;将;将c1c1和和c2c2均转换成整型,完成均转换成整型,完成c1c1* *c2c2,结果表示为,结果表示为t3t3;然后然后t1t1转换成双精度型,完成转换成双精度型,完成t1+t2t1+t2,结果表示为,结果表示为t4t4;将;将t3t3转换成双精度型,

54、完成转换成双精度型,完成t4+t3t4+t3,最后结果转为单精度型赋给,最后结果转为单精度型赋给x2x2。 .542.赋值类型转换2.5.3结束结束系统自动进行类型转换规则:系统自动进行类型转换规则:1 1、实型数赋给整形变量:取整;注意溢出;、实型数赋给整形变量:取整;注意溢出;2 2、整型数赋给实型变量:先转换为实型数;、整型数赋给实型变量:先转换为实型数;3 3、字符型数赋给整形变量:、字符型数赋给整形变量:ASCIIASCII码为依据;码为依据;分为两种情况:符号位是分为两种情况:符号位是0 0或或1 1时不同;时不同;若符号位为若符号位为1,则低位字节不变,高位字节全部置,则低位字节

55、不变,高位字节全部置1再赋值。再赋值。4 4、绝对值较大的数赋给表达范围较小的数据、绝对值较大的数赋给表达范围较小的数据类型时,注意溢出;类型时,注意溢出;.552.5.4 强制类型转换运算符ok其格式为:其格式为: () () /形式一形式一或或 ()/形式二形式二作用:作用:将表达式强制转换为将表达式强制转换为类型,类型, 但表达式的值及其类型不变。但表达式的值及其类型不变。任意数据类型任意数据类型.56 赋值运算中,当左值与右值类型不一致时,赋值运算中,当左值与右值类型不一致时,系统将按照系统将按照左值左值的类型,的类型,自动自动进行强制转换。进行强制转换。例如例如: : 设有以下定义设

56、有以下定义 double x=2.3,y; int i=2,j;(1) j2.3x2.3 22(1) j=x;(2) y=i;由由系统系统按按左值左值j 、y类型类型自动自动完成强制完成强制转换功能转换功能 (2) y2i2 2.02.02.5.4 强制类型转换运算符.57第三章: 简单输入/输出 3.1 cin cin用来在程序执行期间给变量输入数据,用来在程序执行期间给变量输入数据, 一般格式为:一般格式为: cin变量名变量名1变量名变量名2变量名变量名n; cout实现将数据输出到显示器的操作,实现将数据输出到显示器的操作, 一般格式为:一般格式为: cout表达式表达式1表达式表达式

57、2表达式表达式n; 同时必须在程序开头增加一行:同时必须在程序开头增加一行: # include .583.1.1十进制数据的输入输出请看下例:请看下例:int i, j; float x, y;cout”Input i, j, x, y:”ij;/Dcinxy;cout”i=”it”j=”jendl;cout”x+y=”x+yendl; 若输入:若输入:10 20 4.5 8.6 则程序输出:则程序输出:i=10j=20 x+y=13.1输出时各数据间是无间隔的,因此应当有意输出一些输出时各数据间是无间隔的,因此应当有意输出一些间隔符间隔符 ok.59 3.1.2 输入字符数据输入字符数据

58、cin 与与cin.get( )的区别的区别 (1) cin 例如例如:char c1, c2, c3;cinc1;/Acinc2c3; 程序执行到程序执行到A行时,等待用户输入数据。行时,等待用户输入数据。 若输入:若输入:A b c 则则cin分别将字符分别将字符A、b、c赋给变量赋给变量c1、c2、c3。 cin自动跳过输入的自动跳过输入的空白空白字符(包括空格,制字符(包括空格,制表,表,backspace和回车等)。和回车等)。 .60 (2)cin.get() 例如:例如: char c1, c2, c3, c4;cin.get (c1);/Bcin.get (c2);cin.ge

59、t (c3); 程序执行到程序执行到B行时,若输入:行时,若输入:A b 则执行结果是:字符则执行结果是:字符A、空格、字符、空格、字符b分别赋给变量分别赋给变量c1、c2、c3;输入行中仍;输入行中仍保留回车符。保留回车符。cin.get()把从键盘上输入的把从键盘上输入的所有字符,包括所有字符,包括空白空白字符,都作为输入字符,都作为输入字符赋给字符变量字符赋给字符变量 .61 关于字符的输出,请看下例,假定字符关于字符的输出,请看下例,假定字符c1、c2、c3的值分别为字符的值分别为字符a、b和和c,执行以下语句,执行以下语句序列:序列: coutc1tc2n; coutc3endl;

60、coutOkendl; 屏幕上将输出:屏幕上将输出: ab c Ok 输出时字符之间是无间隔的,如果想让字符间输出时字符之间是无间隔的,如果想让字符间有间隔,必须输出间隔符有间隔,必须输出间隔符 .62补充.字符串输入输出向一个字符数组中输入字符串时,用函数向一个字符数组中输入字符串时,用函数getline() 。getline() 以用户按下回车键作为结以用户按下回车键作为结束,在此之前的所有输入都放入字符数组中:束,在此之前的所有输入都放入字符数组中:cin.getline (char ,int)其中第一个参数是已经定义的字符数组名,第其中第一个参数是已经定义的字符数组名,第二个参数是读入字符的最多个数二个参数是读入字符的最多个数n(包括字符(包括字符串结束符串结束符/0)。

温馨提示

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

评论

0/150

提交评论