第二章 基础知识.ppt

上传人:hyn****60 文档编号:87228690 上传时间:2023-04-16 格式:PPT 页数:88 大小:908.50KB
返回 下载 相关 举报
第二章 基础知识.ppt_第1页
第1页 / 共88页
第二章 基础知识.ppt_第2页
第2页 / 共88页
点击查看更多>>
资源描述

《第二章 基础知识.ppt》由会员分享,可在线阅读,更多相关《第二章 基础知识.ppt(88页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、计算机所处理的数据以一定形式存放在内存中,数据计算机所处理的数据以一定形式存放在内存中,数据的存储方式以及能够进行的合法运算都与数据类型直的存储方式以及能够进行的合法运算都与数据类型直接相关。接相关。C+C+的特点之一就是提供了丰富的数据类型,的特点之一就是提供了丰富的数据类型,以便处理各种不同的数据。以便处理各种不同的数据。数据类型数据类型总是与运算封装总是与运算封装在一起,本质上是面向对象的。在一起,本质上是面向对象的。本章将简要介绍本章将简要介绍C+C+中的数据类型及相关运算,以及常量、变量、表达式、中的数据类型及相关运算,以及常量、变量、表达式、语句等,最后介绍简单的输入输出方法。语句

2、等,最后介绍简单的输入输出方法。第二章第二章 C+基础知识基础知识第二章第二章 C+基础知识基础知识21C+的词法单位的词法单位25运算符、表达式和语句运算符、表达式和语句26简单的输入输出简单的输入输出24数组与字符数组数组与字符数组23常量和变量常量和变量22C+中的数据类型中的数据类型ok2.1 C+的词法单位的词法单位211C+的字符集的字符集 212关键字关键字 213标识符标识符(ID,identifier)214标点符号标点符号 ok2.1.1 C+的字符集的字符集ASCII码码字符集是计算机中的常用字符集。字符集是计算机中的常用字符集。它包括英文字母及阿拉伯数字等它包括英文字母

3、及阿拉伯数字等128个字符,个字符,存储一个存储一个ASCII码码占用一个字节占用一个字节单元。单元。由于汉字处理的需要,又出现了由于汉字处理的需要,又出现了汉字国汉字国标码标码等对应于不同语言的字符集。国标码等对应于不同语言的字符集。国标码的存储占用两个字节单元。的存储占用两个字节单元。Unicode字符集对各类字符进行字符集对各类字符进行统一的双统一的双字节编码字节编码。它包括了世界上多种语言的基本。它包括了世界上多种语言的基本字符,字符,最多可容纳最多可容纳65536个个字符。字符。ASCII码码字符集,国标码字符集都是它的子集。字符集,国标码字符集都是它的子集。okC+的字符集的字符集

4、26个个小写字母小写字母 abcdefghijklmnopqrstuvwxyz 26个个大写字母大写字母 ABCDEFGHIJKLMNOPQRSTUVWXYZ 10个个阿拉伯数字阿拉伯数字 0 1 2 3 4 5 6 7 8 9 其他符号其他符号 +-*/=,._:;?|!#%&()空格空格 C+语言使用下列基本字符来构成词法单位:语言使用下列基本字符来构成词法单位:2.1.1结束2.1.2 关关 键键 字字关键字(keyword)又称保留字。是由系统定义的具有特定含义的英文单词。关键字不能另作它用。C+区分大小写,关键字全部由小写字母组成。标准C+(ISO14882)定义了74个关键字,具体

5、的C+编译器还会做一些增删。常用关键字及分类见表2.1。ok 关关 键键 字字数据类型说数据类型说明符与修饰明符与修饰符符boolcharwchar_tclassconstdoubleenumfloatintlongshortsignedstructunionunsignedvoidvolatile存储类型说存储类型说明符明符autoexterninlineregisterstatic访问说明符访问说明符friendprivateprotectedpublic其它说明符其它说明符asm explicit namespace operator template thistypedeftypena

6、meusingvirtual 语句与标号语句与标号breakcasecatchcontinuedefaultdoelseforgotoifreturnswitchthrowtrywhile 运算符及逻运算符及逻辑值辑值deletefalsenewsizeoftrue表表2-1 C+2-1 C+常用关键字及分类常用关键字及分类 ok 关关 键键 字字2.1.2结束 还有一些关键字本书未介绍:还有一些关键字本书未介绍:const_cast dynamic_cast reinterpret_cast static_cast export mutable typeid 下面可用一些关键字代替逻辑运算符

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

8、个字符个字符,VC+VC+标识符长度为标识符长度为1 1247247个字符个字符。建议使用有一定含义的英文单词或拼音序建议使用有一定含义的英文单词或拼音序列作标识符,以提高列作标识符,以提高可读性可读性;另外尽量不用下;另外尽量不用下划线或双下划线打头,以免与系统定义的关键划线或双下划线打头,以免与系统定义的关键字冲突。字冲突。ok标识符标识符例例:判断下面哪些是合法的标识符:判断下面哪些是合法的标识符:MyFileSalary94amountvoid94SalarySalary94$amountf3.5Num_of_Student2.1.3结束2.1.4 标点符号标点符号标点符号包括标点符号

9、包括:#、()、,、,、:、:、;、;、等。等。标点符号的作用标点符号的作用:有一定的语法意义。如字符和字符串有一定的语法意义。如字符和字符串常量分别用常量分别用和和“”引起来。引起来。对语法符号起分隔作用。如对语法符号起分隔作用。如;等;等2.1.4结束2.2 C+中的数据类型中的数据类型图图2-1C+的的数据结构数据结构实实型型float双精度型双精度型doubleC+的数的数据类型据类型基本数据基本数据类型类型非基本数非基本数据类型据类型数组数组type指针指针type*结构结构struct联合联合union枚举枚举enum类类class整整型型int字符型字符型char逻辑型逻辑型bo

10、ol无值型无值型void实实型型ok C+C+对基本数据类型也分别进行了封装,称对基本数据类型也分别进行了封装,称为为内置数据类型内置数据类型,内置数据类型不仅定义了数据,内置数据类型不仅定义了数据类型,类型,还定义了还定义了常用操作常用操作。本节仅介绍各种基本。本节仅介绍各种基本数据类型的定义,常用操作将在后面介绍。数据类型的定义,常用操作将在后面介绍。C+C+为强类型语言,所有数据的使用严格遵从为强类型语言,所有数据的使用严格遵从“先说明后使用先说明后使用”的原则,以便编译器进行编译。的原则,以便编译器进行编译。整型整型用来存放整数,整数(有符号的整数)用来存放整数,整数(有符号的整数)在

11、内存中存放的是它的补码,无符号数没有符在内存中存放的是它的补码,无符号数没有符号位,存放的就是原码。整数占用的字节数与号位,存放的就是原码。整数占用的字节数与机型有关,机型有关,3232位机上占用位机上占用4 4个字节。个字节。字符型字符型用来保存字符,存储的是该字符的用来保存字符,存储的是该字符的ASCIIASCII码,码,占用一个字节。如大写字母占用一个字节。如大写字母A A的的ASCIIASCII码为码为6565,在对应的,在对应的一个字节中存放的就是一个字节中存放的就是6565。字符型数据从本质上说也是。字符型数据从本质上说也是整数,可以是任何一个整数,可以是任何一个8 8位二进制整数

12、。位二进制整数。由于汉语系字符很多,用由于汉语系字符很多,用ASCIIASCII字符集处理远远不够,字符集处理远远不够,因此又创立了双字节字符集(因此又创立了双字节字符集(DBCSDBCS:double-byte double-byte character setcharacter set),每个字符用两个字节来编码。为便于),每个字符用两个字节来编码。为便于软件的国际化,国际上一些知名公司联合制定了新的宽软件的国际化,国际上一些知名公司联合制定了新的宽字节字符标准字节字符标准UnicodeUnicode。该标准中所有字符都是双字。该标准中所有字符都是双字节的,不同的语言和字符集分别占用其中一

13、段代码。这节的,不同的语言和字符集分别占用其中一段代码。这种用统一编码处理西文、中文及其它语言符号,就是种用统一编码处理西文、中文及其它语言符号,就是unicodeunicode码。码。C+C+同时也支持宽字符类型(同时也支持宽字符类型(wchar_twchar_t),或),或称双字节字符型称双字节字符型。实型实型和和双精度型双精度型都用来存放实数,两者表示的实数都用来存放实数,两者表示的实数精度不同。实数在内存中以规范化的浮点数存放,包括尾精度不同。实数在内存中以规范化的浮点数存放,包括尾数、数符和阶码。数的精度取决于尾数的位数,数、数符和阶码。数的精度取决于尾数的位数,32位机位机上实型为

14、上实型为23位(因规范化数的数码最高位恒为位(因规范化数的数码最高位恒为1,不必存,不必存储,实际为储,实际为24位),双精度为位),双精度为52位。位。逻辑型逻辑型也称也称布尔型布尔型,其取值为,其取值为true(逻辑真)和(逻辑真)和false(逻(逻辑假),存储字节数在不同编译系统中可能有所不同,辑假),存储字节数在不同编译系统中可能有所不同,VC+6.0中为中为1个字节。布尔型在运算中可以和整型相互转个字节。布尔型在运算中可以和整型相互转化,化,false对应为对应为0,true对应为对应为1或非或非0无值型无值型主要用来说明函数的返回值类型,将在函数一章中主要用来说明函数的返回值类型

15、,将在函数一章中具体介绍。具体介绍。基本数据类型还可以加上一些修饰词,包括:基本数据类型还可以加上一些修饰词,包括:signed(有符号)、(有符号)、unsigned(无符号)、(无符号)、long(长)、(长)、short(短)。参见下表:(短)。参见下表:2.2结束 类类型型名名称称占用字节数占用字节数取取值值范范围围bool布尔型布尔型true,false(signed)char有符号字符型有符号字符型1-128 127unsigedchar无符号字符型无符号字符型10 255(signed)short(int)有符号短整型有符号短整型2-32768 32767unsignedshor

16、t(int)无符号短整型无符号短整型20 65535(signed)int(signed)有符号整型有符号整型4-231(231-1)unsigned(int)无符号整型无符号整型40(232-1)(signed)long(int)有符号长整型有符号长整型4-231(231-1)unsignedlong(int)无符号长整型无符号长整型40(232-1)float实型实型4-1038 1038double双精度型双精度型8-10308 10308longdouble长双精度型长双精度型8-10308 10308void无值型无值型0无值无值VC+中所有基本数据类型所有基本数据类型2.3 常量和

17、变量2.3.1 变 量2.3.2 字面常量2.3.3 常变量及常量说明符const在程序中,常量和变量是用来表示数据的;在程序中,常量和变量是用来表示数据的;常量又分为字面常量、常变量;常量又分为字面常量、常变量;ok2.3.1 变 量1 1 变量说明变量说明 2 2 变量赋初值变量赋初值 变量变量,在程序中是指可以改变值的量;,在程序中是指可以改变值的量;变量必须用标识符进行标识,称为变量必须用标识符进行标识,称为变量名变量名;变量有变量有类型类型之分,如整形变量、字符变量等;之分,如整形变量、字符变量等;任何变量都必须任何变量都必须先说明后使用先说明后使用;一是便于编译;一是便于编译程序为

18、变量分配空间,二是便于编译时进行语程序为变量分配空间,二是便于编译时进行语法检查;法检查;变量使用的第一步,是给变量赋变量使用的第一步,是给变量赋初始值初始值;ok1变量说明 在在C+C+中,变量说明的一般格式为:中,变量说明的一般格式为:存储类型存储类型数据类型数据类型 变量名变量名1 1,变量名变量名2,2,变量名变量名n n;下面是变量说明的几个例子:下面是变量说明的几个例子:inti,j,k;/说明三个整型变量说明三个整型变量i,j,kfloatx,y,z;/说明三个实型变量说明三个实型变量x,y,zcharc1,c2;/说说明明两两个个字字符符型型变变量量c1,c2doubledx;

19、/说明一个双精度型变量说明一个双精度型变量dx变量说明 结束 2变量赋初值(1 1)变量说明时直接赋初值。变量说明时直接赋初值。例如:例如:intint a=3,b=4,c=5;a=3,b=4,c=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;2.3.1结束 给变量赋初值称为初始化,有两种方法:给变量赋初值称为初始化,有两种方法:2.3.2 字面常量1.1.整型常量整型常量 4.

20、4.字符串常量字符串常量3.3.字符型常量字符型常量2.2.实型常量实型常量字面常量字面常量,指程序中直接给出的量;,指程序中直接给出的量;常量的值在程序执行过程中保持不变;并且常量的值在程序执行过程中保持不变;并且存储在程序区存储在程序区,而非数据区;,而非数据区;根据取值和表示方法的不同,可分为以下几根据取值和表示方法的不同,可分为以下几种:种:ok1.整型常量十进制表示法十进制表示法八进制表示法八进制表示法十六进制表示法十六进制表示法其他表示法其他表示法即整数,可以有多种表示方法:ok 整数的十进制表示方法十进制表示与我们熟悉的书写方式相同。十进制表示与我们熟悉的书写方式相同。如如15

21、-24ok 整数的八进制表示 八八进进制制表表示示以以0 0开开始始,由由数数字字0 0 7 7组组成成,用用来来表示一个八进制数。表示一个八进制数。如:如:012012/八进制数八进制数1212,即十进制数,即十进制数1010-0655-0655/八进制数八进制数-655-655,即十进制数,即十进制数-429-429ok 整数的十六进制表示 十十六六进进制制以以0X0X(大大小小写写均均可可)开开始始,由由数数字字0 0 9 9和和字字母母A A F F(大大小小写写均均可可)组组成成,用用来来表示一个十六进制数。表示一个十六进制数。以下是一些以下是一些常整数常整数的例子:的例子:0 x3

22、2A /0 x32A /十六进制数十六进制数32A32A,即十进制数,即十进制数810810-0 x2fe0 /-0 x2fe0 /十六进制数十六进制数-2fe0-2fe0,/即十进制数即十进制数-12256-12256ok整数的其他表示方法 整整型型常常量量还还可可以以表表示示长长整整数数和和无无符符号号整整数数。长长整整型型常常数数以以 L L 或或 l l 结结尾尾,无无符符号号常常整整数数以以 U U 或或 u u 结结尾尾,以以 U U L L 或或 L L U U(大大小小写写均均可可)结尾则可表示无符号长整型常数。结尾则可表示无符号长整型常数。例如:例如:-84L-84L/十进制

23、长整数十进制长整数-84-84026U026U/八进制表示的无符号整数八进制表示的无符号整数26260X32LU/0X32LU/十六进制表示的无符号长整型数十六进制表示的无符号长整型数3232。整数 结束 2.实型常量(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或

24、或e e和和阶数阶数组组成成。指数形式要求在。指数形式要求在E E或或e e前面的前面的尾数部分必须尾数部分必须有数字有数字,后面的,后面的指数部分必须为整数指数部分必须为整数。例例 :判断下列表示是否合法判断下列表示是否合法123E12-.34e-2 E4 1.43E3.5 包含小数点和包含小数点和1010的幂的数为实型常量,有的幂的数为实型常量,有两种表示方法:两种表示方法:实数实数 结束结束3.字符型常量 字字符符常常量量是是用用单单引引号号引引起起来来的的单单个个字字符符。在在内内存存中中保保存存的的是是字字符符的的ASCIIASCII码码值值。在在所所有有字字符符中中,有有些些是是可

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

26、放占一个字节,存放aa,值为值为0 x610 x612.3.2结束结束用双引号引起来的若干个字符称为字符串常量用双引号引起来的若干个字符称为字符串常量。例如例如:I am a Chinese.,123,a,:I am a Chinese.,123,a,2.3.3 常变量及常量说明符const用常量说明符用常量说明符constconst给字面常量起个名字(标识符),给字面常量起个名字(标识符),这个标识符就称为这个标识符就称为标识符常量标识符常量;因为标识符常量的说明和引用形式很像变量,所以也因为标识符常量的说明和引用形式很像变量,所以也称称常变量常变量;例如:;例如:constconst fl

27、oat PI=3.14159;float PI=3.14159;const const intint Number_of_Student=100;Number_of_Student=100;常变量必须也只能在说明时进行初始化;常变量必须也只能在说明时进行初始化;常变量初始化之后,不允许再被赋值;常变量初始化之后,不允许再被赋值;常变量必须先说明后使用;常变量必须先说明后使用;常变量存储在数据区,并且可以按地址访问,编译时常变量存储在数据区,并且可以按地址访问,编译时系统对常变量进行类型检查。系统对常变量进行类型检查。C+C+建议使用常变量,而不要使用文字常量。建议使用常变量,而不要使用文字常量

28、。2.3.3 结束结束2.4 数组与字符数组2.4.1 2.4.1 数数 组组2.4.2 2.4.2 字字 符符 数数 组组本节介绍一种用户自定义的导出数据类型本节介绍一种用户自定义的导出数据类型 数组类型数组类型ok2.4.1 数组数组是有限个数组是有限个同类型同类型元素的有序集合元素的有序集合,这些元,这些元素有一个共同的名字,每个元素以其在数组中的素有一个共同的名字,每个元素以其在数组中的位置区分位置区分,位置用,位置用下标下标表示。表示。例如数列或向量就可以看作一个数组,其中的例如数列或向量就可以看作一个数组,其中的元素用一个下标即可确定。元素用一个下标即可确定。矩阵也可看作一个数组,

29、其中的元素需要用矩阵也可看作一个数组,其中的元素需要用“行行”、“列列”两个下标确定。两个下标确定。数组下标的个数称作数组下标的个数称作维数维数,上述代表数列的数,上述代表数列的数组和代表矩阵的数组分别称为一维数组和二维数组和代表矩阵的数组分别称为一维数组和二维数组。本节只介绍一维数组。组。本节只介绍一维数组。ok 一维数组定义一个一维数组的一般格式为:定义一个一维数组的一般格式为:存储类型存储类型 数据类型数据类型 数组名数组名 常量常量;数据类型指的是数组中元素的数据类型,可数据类型指的是数组中元素的数据类型,可以是以是C+中定义的任何一种数据类型。中定义的任何一种数据类型。写在中括号中的

30、常量用来定义数组大小,即写在中括号中的常量用来定义数组大小,即数组中元素的个数。数组中元素的个数。例如:例如:int m5;/定义数组定义数组m,其中有其中有5个整数个整数constintN=3;floatxN;/数组数组x中有中有3个实数个实数ok 一维数组 数组在存储单元中是按下标的顺序连续存放的,数组在存储单元中是按下标的顺序连续存放的,任何一个元素都可以单独访问,其标识方法是用任何一个元素都可以单独访问,其标识方法是用数组名和下标:数组名和下标:数组名数组名 表达式表达式 表达式用来计算下标值。表达式用来计算下标值。C+C+中规定数组第一中规定数组第一个元素的下标为个元素的下标为0 0

31、。okm4m3m2m1m0 x2x1x0 一维数组 C+C+中数组大小在编译时确定,编译系统按照定义为中数组大小在编译时确定,编译系统按照定义为数组分配一段连续的存储单元,这段单元的大小也是不数组分配一段连续的存储单元,这段单元的大小也是不能改变的,因此数组大小不能用变量定义,而只能是一能改变的,因此数组大小不能用变量定义,而只能是一个正整数常量。个正整数常量。下列定义是下列定义是非法非法的:的:int count;float scount;/数组个数不能是变量,且必数组个数不能是变量,且必/须在定义时指明须在定义时指明;const float Num=3;int nNum;/数组个数不能是实

32、数数组个数不能是实数;对对数数组组的的访访问问指指的的是是对对数数组组元元素素的的访访问问,不不能能直直接接将将数数组组名名作作为为访访问问对对象象,对对数数组组赋赋值值也也必必须须对对每每一一个个元元素素逐逐个赋值。个赋值。参见下例:参见下例:ok 一维数组int_arr3=int_arr2=int_arr1=int_arr0=11231输出2.4.1结束结束1231+2=3【例例21】使用数组的简单例子。使用数组的简单例子。#includevoidmain()intint_arr4;int_arr0=1;int_arr1=1;int_arr2=2;int_arr3=int_arr1+int

33、_arr2;coutint_arr0nint_arr1nint_arr2nint_arr3n;2.4.2 字符数组如果数组中的元素为字符,就称为如果数组中的元素为字符,就称为字符数组字符数组。例如:。例如:char string110;/可用来保存可用来保存1010个字符的字符数组个字符的字符数组;char city_name1=N,a,n,j,i,n,g;/可用来保存可用来保存7 7个字符的字符数组个字符的字符数组;C+C+中字符数组用来保存字符串中字符数组用来保存字符串。允许直接用字符串常。允许直接用字符串常量给字符数组量给字符数组初始化初始化。例如:。例如:char city_name2

34、=”Nanjing”;用字符串初始化,字符数组会自动加上一个用字符串初始化,字符数组会自动加上一个串结束符串结束符00 。串结束符在字符串操作中具有十分重要的意。串结束符在字符串操作中具有十分重要的意义,因此在定义字符数组大小时,要注意留出足够的空义,因此在定义字符数组大小时,要注意留出足够的空间保存串结束符。间保存串结束符。ok 字符数组 为了处理字符串,为了处理字符串,C+中提供了若干中提供了若干字符串处理函字符串处理函数数,这些函数定义在文件,这些函数定义在文件string.h中,其中包括:中,其中包括:strlen(s),返回字符串,返回字符串s的实际长度(不包括的实际长度(不包括0)

35、;);strcpy(s1,s2),将字符串,将字符串s2中中0之前的所有字符依之前的所有字符依次赋值到字符串次赋值到字符串s1中,最后中,最后再加上一个再加上一个0。由于不能。由于不能直接对字符数组名赋值,所以将一个字符串的值赋给另一直接对字符数组名赋值,所以将一个字符串的值赋给另一个字符串必须用个字符串必须用字符串拷贝函数字符串拷贝函数完成。例如:完成。例如:char string220;string2=”VC+”;/非法非法strcpy(string2,“VC+”);/合法合法 字符数组【例例22】字符数组和字符串处理函数的应用。字符数组和字符串处理函数的应用。#include#inclu

36、devoidmain()chars1=”HelloC+”;/初始化决定数组初始化决定数组s1有有10个元素个元素chars210,s320;s20=B;s21=e;s22=g;s23=i;s24=n;s25=0;/对字符串结束处理非常重要对字符串结束处理非常重要strcpy(s3,s2);cout”Thelengthof”s1”is:”strlen(s1)n;/只有字符数组可整体输出,因为有结束符只有字符数组可整体输出,因为有结束符couts2ts3ab/结果是结果是?根据右结合根据右结合原则其运算原则其运算过程如下:过程如下:a5b3.23F,即即0F即即0优优先先级级运运算算符符名名称称语

37、语义义2!逻辑非逻辑非,单目单目操操作作数数的的值值为为真真,则则结结果为假果为假;12&逻辑与逻辑与,双目双目当当两两个个操操作作数数全全为为真真时时,结果为真,否则为假结果为真,否则为假;13|逻辑或逻辑或,双目双目两两个个操操作作数数中中有有一一个个为为真,则结果为真真,则结果为真;逻辑运算符逻辑运算符 逻辑运算符用来进行逻辑运算。其操作数和运逻辑运算符用来进行逻辑运算。其操作数和运算结果均为算结果均为逻辑量逻辑量。运算结果同样可以作为一个。运算结果同样可以作为一个整整数数参与其他运算。参与其他运算。由于由于逻辑值逻辑值和和整数整数之间的之间的对应关系,对应关系,也允许也允许整型整型和和

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

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

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

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

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

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

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

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

46、减,即用变量原来的值参与其他运算,即用变量原来的值参与其他运算,然后再对变量进行自加或自减然后再对变量进行自加或自减,例如:例如:intint i=5,j=5,m,n;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 6;意义:使变量当前值加意义:使变量当前值加1 1或减或减1 1,再赋给该变量。再赋给该变量。要求:操作数只

47、能是要求:操作数只能是变量变量,不能是常量或表达式;,不能是常量或表达式;ok6.sizeof()运算符 用用于于计计算算一一个个操操作作数数类类型型或或一一个个变变量量的的字字节数。一般格式为:节数。一般格式为:sizeofsizeof(数据类型数据类型)或或 sizeofsizeof(变量名变量名)例如:例如:sizeof(int)值为值为4 sizeof(float)值为值为4double x;sizeof(x)值为值为8 2.5.1结束结束2.5.2 表达式1算术表达式算术表达式 2关系表达式关系表达式3逻辑表达式和逻辑表达式求值的优化逻辑表达式和逻辑表达式求值的优化4赋值表达式与复合

48、赋值表达式赋值表达式与复合赋值表达式5逗号表达式逗号表达式ok1.算术表达式使用时注意:使用时注意:1 1、表达式中每个变量都有确定的值时才能进、表达式中每个变量都有确定的值时才能进行表达式求值;行表达式求值;2 2、考虑到算术运算溢出和精度问题,应避免:、考虑到算术运算溢出和精度问题,应避免:(1 1)两个很接近的数直接相减;)两个很接近的数直接相减;(2 2)除数是一个很小的数;)除数是一个很小的数;(3 3)整数的连续乘运算。)整数的连续乘运算。ok由算术运算符连接的表达式称为算术表达式由算术运算符连接的表达式称为算术表达式,例如:例如:a+b*3;2.关系表达式例如:例如:abcabc

49、 /*/*等同于等同于(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*/由由关系运算符连接的表达式。值为关系运算符连接的表达式。值为truetrue或或falsefalse。ok3.逻辑表达式和逻辑表达式求值的优化由由逻逻辑辑运运算算符符连连接接的的表表达达式式称称为为逻逻辑辑表表达达式

50、式。逻逻辑辑表表达达式式的的值为值为truetrue或或falsefalse。这个值可对应整数。这个值可对应整数1 1或或0 0参与其他运算。参与其他运算。ok已知已知:inta=10,b=20,c=30;floatx=1.8,y=2.4;ay|ab-!c按按优先级优先级与与结合性结合性,其,其求值顺序求值顺序等同于:等同于:(ay)|(a(b-(!c)t1=1t2=0t4=0-&t3=0t5=bt6=1|得整个表达式的值为:得整个表达式的值为:13.逻辑表达式和逻辑表达式求值的优化在求逻辑表达式值的过程中,一旦表达式的在求逻辑表达式值的过程中,一旦表达式的值能够确定,就不再逐步进行下面的运算

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

当前位置:首页 > 生活休闲 > 生活常识

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com