第2章 基本数据类型、运算符与表达式.ppt

上传人:sccc 文档编号:5918537 上传时间:2023-09-04 格式:PPT 页数:59 大小:1.10MB
返回 下载 相关 举报
第2章 基本数据类型、运算符与表达式.ppt_第1页
第1页 / 共59页
第2章 基本数据类型、运算符与表达式.ppt_第2页
第2页 / 共59页
第2章 基本数据类型、运算符与表达式.ppt_第3页
第3页 / 共59页
第2章 基本数据类型、运算符与表达式.ppt_第4页
第4页 / 共59页
第2章 基本数据类型、运算符与表达式.ppt_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《第2章 基本数据类型、运算符与表达式.ppt》由会员分享,可在线阅读,更多相关《第2章 基本数据类型、运算符与表达式.ppt(59页珍藏版)》请在三一办公上搜索。

1、基本数据类型、运算符与表达式,第2章,2,2.1 数 据 类 型,C+提供了十分丰富的预定义数据类型,称为基本数据类型。除了基本数据类型外,C+还提供了构造数据类型,包括数组、结构体、共用体(联合体)、枚举和类等。C+可以使用的数据类型如图所示:,3,2.1.1 基本数据类型,每种基本数据类型各自所占的内存空间是不同的,因此所表示的数据的范围大小也不同。在5种基本数据类型中:布尔型用于表示的逻辑的true和false整型用于处理整型数据字符型用于处理ASCII码字符浮点型用于处理带小数的实数空类型主要用于处理函数和指针,4,2.1.2 类型修饰符,C+的类型修饰符包括:signed 有符号型u

2、nsigned无符号型short短型long长型在基本数据类型(除void类型外)前加上类型修饰符后,C+的基本数据类型为:,5,说明:(1)表中带 的部分表示是可以省略的。(2)4种修饰符都可以用来修饰整型和字符型。用signed修饰的类型的值可以为正数或负数,而用unsigned修饰的类型的值只能为正数。(3)Visual C+6.0版本以上的编译器不支持long double类型,long double和double类型一样,都是64位基本双精度,只能用其他C/C+编译器或汇编语言。,6,2.2 常 量,C+语言中的常量有两种表示形式,即直接常量和符号常量。直接常量按照不同的数据类型可以

3、分为整型常量实型常量字符常量字符串常量逻辑常量等对于这些常量可以根据其在程序中的书写格式来区分它是哪种类型的,也称为字面常量。符号常量是一个标识符,在程序中表示常量。,7,在程序中,用户根据需要分别可以用十进制、八进制和十六进制的形式书写整型常量。(1)十进制格式:由数字0至9和正、负号组成书写时直接写出数字如0、21、2004等,2.2.1 整型常量,8,(2)八进制格式:以0开头的数字(0至7)序列如0111、01357、0171717等(3)十六进制格式:以0 x或0X开头的数字(数字0至9、字母a至f)序列如0 xAA、0X12BC、0 xFFFF等,9,实型常量又称为浮点型常量,由整

4、数部分和小数部分组成,只能用十进制格式来书写。可以用小数或指数两种形式表示,指数形式又称为科学计数法,不分单精度和双精度类型。,2.2.2 实型常量,10,(1)实型常量的小数形式由数字和小数点组成的,而且必须存在小数点。如.12、1.06、35.、3.14等。,11,(2)实型常量的指数形式由数字和e(或E)组成的,且e(或E)之前必须有数字e(或E)之后必须为整数如12e6、1.2E7、.56e8是合法的指数形式,而e6、8e5.6则是非法的指数形式。,12,字符型常量分为普通字符常量和转义字符常量(1)普通字符常量用一对单引号括起来的一个字符如s,Y等,2.2.3 字符常量,13,注意:

5、,单引号只是字符与其他部分的分隔符,不是字符的一部分,并且不能用双引号代替单引号,如Y不代表字符常量。,字符常量只能包括一个字符,如ab是不合法的。,单引号中的字符不能是单引号或反斜杠,和都是非法的字符常量。,字符常量区分大小写,如Y和y表示两个不同的字符常量。,14,(2)转义字符常量在C+中,有一些字符用于控制输出或编译系统本身保留,无法作为字符常量来表示。C+规定,采用反斜杠后跟一个字母来代表一个控制字符,反斜杠后的字符不再作原有的字符使用,而具有新的含义。,15,用一对双引号括起来的一个或多个字符的序列字符串以双引号为定界符,双引号不作为字符串的一部分可以将转移字符加入字符串,转义字符

6、占用一个字节。如:Hello A Good Morning!I sayn,2.2.4 字符串常量,16,字符串中的字符的个数称为该字符串的长度。字符串常量要用字符数组来存放。在存储时,系统自动在字符串的末尾加以字符串结束标志,即转义字符 0。如 Hello 在内存中占用6个字节 I sayn 占用7个字节,17,常量也可用一个标识符来表示,称为符号常量。符号常量的一般定义格式如下:#define 标识符 字符串例如:#define MAX 30/末尾不加分号【例2-1】根据输入的半径,计算圆的周长和面积。,2.2.5 符号常量,18,注意:符号常量名一般用大写,而变量名用小写,以示区别。符号常

7、量不同于变量,在其作用域内其值不能改变和赋值。,19,2.2.6 逻辑常量,逻辑型的取值只有true和false两个,它们称为逻辑常量,分别对应着整数1和0。逻辑常量主要用在逻辑运算中。如:int a=33,b=35;bool x;x=(a=b);,20,2.2.7 枚举常量,所谓“枚举”就是一一列举之意,当某些量仅由有限个数据组成时,通常用枚举类型来表示。声明枚举类型用关键字enum开头。其声明形式为:enum 枚举类型名 枚举值1,枚举值2,枚举值n;enum weekdaysunday,monday,tuesday,wednesday,thursday,friday,saturday;说

8、明:对枚举值按常量处理,故称为枚举常量。枚举常量是有值的,C+语言按定义时的顺序使它们的值依次为0,1,2,。可以改变枚举常量的值,但必须在定义时由程序员指定。enum weekdaysunday=7,monday=1,tuesday,wednesday,thursday,friday,saturday;,21,2.3 变 量,变量是指在程序的运行过程中其值可以变化的量。变量在使用之前需要先进行类型和名称的声明。变量是用于保存程序运算过程中所需要的原始数据中间运算结果最终结果,22,每一个变量就相当于一个容器,对应着计算机内存中的某一块存储单元。变量的值具有以下两个特点:一充即无取之不尽,in

9、t i;i=10;i=20;,int i,j,k;i=10;j=i+10;k=i+j*5;,23,2.3.1 标识符的命名规则,标识符(Identifier)是指变量、常量、语句标号、函数、类、对象等的名称,是程序员根据程序设计的需要而命名的。标识符的命名要符合如下规则。(1)标识符要以字母或下划线开头。(2)标识符可以由字母、数字和下划线组成。(3)标识符中的字母区分大小写。(4)标识符不能与关键字同名。(5)标识符的有效长度一般设为32个字符。,24,2.3.2 变量的定义,每一变量都要先定义、后使用;定义变量3种格式:修饰符 数据类型标识符 变量名列表;修饰符 数据类型标识符 变量名=初

10、始化值;修饰符 数据类型标识符 变量名1=初始值1,变量名2=初始值2,;如:float r;char sex=M;int n,sum=0;,25,2.3.3 变量的使用,变量的赋值形式变量=表达式;例如:char c1,c2;c1=N;/将c1的值赋为Nc2=Y;/将c2的值赋为Y变量的初始化char c1=N,c2=Y;,26,2.3.4 常变量,const 数据类型标识符 常变量名=常量值;例如:const int a=10;区别用#define定义的符号常量和用const定义的常变量:符号常量使用一个字符串代替程序中出现的一个标识符,是在编译时把所有的符号常量都替换成指定的字符串,它没

11、有数据类型,在内存中也不存在以符号常量命名的存储单元。常变量则具有变量的特征,它有数据类型,在内存中存在以它的名字命名的存储单元,只是与一般变量所不同的是常变量的值不能够改变。,27,2.4 运算符和表达式,运算符是表示进行何种运算的符号,又称为操作符。运算量包含常量、变量、函数等,又称为操作数。C+语言的运算符按照其在表达式中与操作数的关系(即连接的操作数的个数),可以分为:单目运算符,如,*、+等;双目运算符,如,+、&等;三目运算符,如,条件运算符?:。每个运算符都有优先级和结合性:当一个表达式中包含多个运算符时,先进行优先级高的运算,在进行优先级低的运算;而对于多个优先级相同的运算符,

12、运算的顺序就要看运算符的结合性了。,28,2.4.1 算术运算符和算术表达式,算术运算符就是对数据进行算术运算的运算符。如:加、减、乘、除等,是在程序中使用最多的一种运算符,C+的算术运算符:,29,若定义了x为int型的变量,且其初始值为10,则5/9*(x32)(2*x3)*x+2)*x10%3x*6,30,注意:(1)表达式中的括号不管有多少层,一律使用圆括号。(2)在将一个数学上的运算式写成对应的C+的表达式时,要注意进行必要的转换:乘号不能省略。数学表达式中出现的数学运算函数要用C+提供的相应的数学运算库函数来代替。要特别注意表达式中两个整型数相除的情况。(3)求余运算符只能用于整型

13、和字符型数据,字符型数据可以与整型数据通用。,31,1.自增运算符自增运算符“+”使操作数的值增1,其操作数必须为变量。+运算符可以置于操作数前面,也可以放在操作数后面。例如:+n或n+。这两个表达式产生的结果都是使n的值增1,可以说没什么区别。相当于n=n+1;+前置和后置的区别:int n=1,post,pre;post=n+;pre=+n;再如:int n=5,post=1,pre=1;pre=(+n)+pre;/运算结束后pre的值为7,n的值为6n=5;post=(n+)+post;/运算结束后post的值为6,n的值为6,2.4.2 自增、自减运算符,32,2.自减运算符自减运算符

14、“-”使操作数的值减1。同样,其操作数也必须为变量,且可以置于操作数前面,也可以放在操作数后面。例如:-n或n-。自减运算符和自增运算符非常相似,区别只在于自减运算符使操作数减1,而自增运算符使操作数增1。例如:int n=5,post=1,pre=1;pre=(-n)+pre;/运算结束后pre的值为5,n的值为4n=5;post=(n-)+post;/运算结束后post的值为6,n的值为4,33,2.4.3 赋值运算符和赋值表达式,1赋值运算符 变量名=变量、常量或表达式说明:(1)=左边的量必须是变量,而不能是常量或表达式,也就是说,常量或表达式是不能被赋值的。(2)=右边的量可以是变量

15、,也可以是常量或表达式。(3)赋值运算符的功能是将某个数据的值赋给某个变量,从而使该变量得到一个值。(4)由赋值运算符将变量和表达式连接起来的式子称为赋值表达式。该赋值表达式的值就是被赋值的变量的值。(5)要注意区分赋值运算符“=”与数学上的“等号”间的区别。,34,例如:int x,y;x=100;x=x+20;通常在一个表达式中,赋值运算符两边的数据类型是相同的,当两边的数据类型不同时,则在进行赋值运算前自动把赋值运算符右边的值转换为与左边变量类型相同的值,然后再把这个值赋给左边的变量。例如:int x;x=1.82;/x的值为1,35,2复合赋值运算符 复合赋值运算符的功能是将运算符右边

16、的值同左边的变量的值进行相应的运算以后,再把这个运算结果赋给左边的变量,该复合赋值表达式的值也是运算符左边的变量的值。例如:int x=10,y=20;y=x+5;x*=y+10 在C+中,之所以采用这种复合赋值运算符,一方面是为了简化程序,使程序比较精练;另一方面则是为了提高程序的编译效率。专业的程序员在写程序的过程中经常使用复合赋值运算符,而初学者可能不太习惯这种写法,可以少用。,36,2.4.4 sizeof运算符,sizeof运算符的功能是求某一数据类型或某一变量在内存中所占空间的字节数。sizeof(变量名或数据类型)或 sizeof 变量名或数据类型【例2-2】sizeof运算符的

17、使用。,37,2.4.5 关系运算符和关系表达式,关系运算符就是对两个量之间进行比较,判断比较结果的运算符。C+的关系运算符:,38,由关系运算符将两个表达式连接形成的式子称为关系表达式。一个关系表达式的值是一个逻辑值,当关系表达式成立时,其值为真(1);当关系表达式不成立时,其值为假(0)。例如,假设a、b、c均为整型变量,且初始值分别为10、20、30,则a=a/表达式成立,其值为1,39,注意:在对两个表达式的值进行是否相等的比较时,要用运算符“=”,而不能写成“=”,因为后者表示赋值运算,如表达式x=(y+5)表示判断x的值与表达式y+5的值是否相等;而x=(y+5)则表示将y+5的值

18、赋给变量x。,40,2.4.6 逻辑运算符和逻辑表达式,逻辑运算符是对两个逻辑量间进行运算的运算符,如下所示:,41,由逻辑运算符将两个表达式连接形成的式子称为逻辑表达式。对于参加逻辑运算的操作数,系统认为“非0”为真,“0”为假。逻辑表达式的结果只能为逻辑真(1)或逻辑假(0)各种逻辑运算的“真值表”如下表所示:,42,注意:(1)C+中,在给出一个逻辑表达式的最终计算结果值时,用1表示真,用0表示假。但在进行逻辑运算的过程中,凡是遇到非零值时就当真值参加运算,遇到0值时就当假值参加运算。(2)在逻辑表达式的求值过程中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表

19、达式的值时才执行该运算符。a 则表达式i+|i+|i+的值为1(真),该表达式运算结束后,变量i的值为11,而不是13。(3)对于数学上的表示多个数据间进行比较的表达式,在C+中要拆写成多个条件,并用逻辑运算符将其连接形成一个逻辑表达式,而不能直接照搬。,43,2.4.7 条件运算符,在C+中只提供了一个三目运算符即条件运算符“?:”,其一般形式为:表达式1?表达式2:表达式3条件运算的运算规则是:首先判断表达式1的值,若其值为真(非0),则取表达式2的值为整个表达式的值;若其值为假(0),则取表达式3的值为整个表达式的值。例如,若a=10,b=20,则条件表达式ab?a:b的值为20。,44

20、,条件运算符的优先级别高于赋值运算符,低于关系运算符和算术运算符。例如,表达式ab?ab:ba相当于表达式ab?(ab):(ba)。条件运算符的结合性是自右向左。例如,表达式ab?a:cd?c:d相当于表达式ab?a:(cd?c:d)。,45,2.4.8 位运算符,1位运算符及其运算规则位是计算机表示信息的最小单位,一般用0和1表示。位运算符是指能进行二进制位运算的运算符。位运算符的运算对象必须为整数。C+提供的位运算符如下表所示。,46,位运算的运算规则为:(1)按位与&:两个运算量相应的位都是1,则该位的结果值为1,否则为0。(2)按位或|:两个运算量相应的位只要有一个是1,则该位的结果值

21、为1,否则为0。(3)按位异或:两个运算量相应的位不同,则该位的结果值为1,否则为0。,47,(4)按位取反:将运算量的每一位取反,即将1变0,0变1。(5)按位左移:将操作数中的每一位向左移动指定的位数,移出的位被舍弃,空出的位补0。(6)按位右移:将操作数中的每一位向右移动指定的位数,移出的位被舍弃,空出的位补0或补符号位,这要由机器决定。,48,2复合位运算符位运算符与赋值运算符结合可以形成复合位运算符。如下表所示:,49,2.4.9 逗号运算符,逗号运算符“,”的运算优先级是所有运算符中最低的。使用逗号运算符可以将多个表达式组合成一个表达式。表达式1,表达式2,表达式N在计算逗号表达式

22、的值时,应按照从左至右的顺序依次分别计算各个表达式的值,而整个逗号表达式的值和类型是由最右边的表达式决定的。如:设有语句int a=10,b=12;则逗号表达式a+,b+,a+b的值为24,a的值为11,b的值为13。再如:设有int i;则表达式i=1,(i+)=2?i+1:i+4的值为6,i的值为2。,50,2.4.10 运算符的优先级与结合性,当一个表达式中包含多个运算符时,要确定运算的结果必须首先确定运算的先后顺序,即运算符的优先级和结合性。C+中运算符的优先级和结合性如下表所示。,51,说明:(1)表中同一行的运算符具有相同的优先级,其优先级按从上到下的顺序递减。(2)当同一表达式中

23、有多个优先级相同的运算符时,则根据其结合性确定运算顺序。C+中,对表达式求值时,先按优先级确定运算次序,再将优先级相同的运算符按结合性进行运算。如:表达式a+!b+c-,先求解!b和c-,然后a加上!b再加上c-得出最后的结果。,52,C+中类型转换有两种方式,即隐式类型转换和显式类型转换。1-5-1 隐式类型转换所谓隐式类型转换就是在编译时由编译程序按照一定规则自动完成,而不需要人为干预。数据隐式类型转换的规则如下图所示。,2.5 数据类型转换,53,54,如:有如下定义:int a,b;float f;double d;long e;则表达式a=10+A+b*fd/e的运算次序是:(1)先

24、计算右侧的表达式。进行b*f运算。先将b和f均转换为double类型,运算结果是double类型。进行d/e运算。先将e转换为double类型,运算结果是double类型。进行10+A运算。先将A转换为int类型(65),运算结果是int类型。整数75与b*f的积相加。先将整数75转换为double类型(75.0),运算结果是double类型。进行运算,运算结果是double类型。(2)将右侧表达式的结果转换为int型,并赋给a。,55,显示类型转换又称为强制类型转换,由强制类型转换运算符来实现。强制类型转换运算符的功能是将某一数据从一种数据类型向另一种数据类型进行转换。其使用的一般形式为:数

25、据类型标识符(表达式)或(数据类型标识符)表达式即在被转换对象(或表达式)前加数据类型标识符。如:int i=20;float a,b;a=float(i);b=(float)i;,2.5.2 显式类型转换,56,2.6 数据的输入与输出,程序在运算过程中所需要的原始数据需要输入到程序中,而经过处理后产生的结果也需要输出来。在C+语言中,数据的输入和结果的输出是分别使用系统所提供的输入流对象cin和输出流对象cout来完成的。在使用这两个流对象的过程中,需要在程序的开头嵌入相应的头文件“iostream”。,57,2.6.1 数据的输入cin,输入流对象cin输入数据的语句格式为:cin变量名

26、1变量名2变量名n;cin是系统预定义的一个标准输入设备(一般代表键盘)。“”是提取运算符,用于从cin输入流中取得数据,并将取得的数据传送给其后的变量,从而完成数据的输入。注意:(1)提取运算符“”后除了变量名外不得有其他的常量、字符或字符串等,否则系统会报错。(2)提取运算符“”后面所跟的变量可为任何数据类型的变量。(3)当程序中使用cin输入数据时,最好在该语句之前用cout输出一个需要输入数据的提示信息,以正确引导和提示用户输入正确的数据。(4)当一个cin后面同时跟有多个变量时,则用户输入数据的个数应与变量的个数相同,各数据之前用一个或多个空格隔开,输入完毕后按回车键;或者,每输入一

27、个数据按回车键也可。,58,2.6.2 数据的输出cout,输出流对象cout输出数据的语句格式为 cout数据1数据2数据n;说明:(1)cout是系统预定义的一个标准输出设备(一般代表显示器)。“”是插入运算符,用于向cout输出流中插入数据。(2)cout的作用是向标准输出设备上输出数据,被输出的数据可以是常量、已有值的变量或是一个表达式。(3)可以在cout输出流中插入C+中的转义字符。(4)可以将多个被输出的数据写在一个cout中,各输出项之间用插入运算符“”隔开即可。,59,(5)一个cout语句也可以拆成若干行书写,但注意语句结束符“;”只能写在最后一行上。(6)在cout中,实现输出数据换行的功能既可以使用转义字符“n”,也可以使用表示行结束的流操作符endl。(7)在cout中还可以使用流控制符控制数据的输出格式,但要注意使用这些流控制符时,要在程序的开始部分嵌入头文件iomanip.h,因为这些控制符是在该文件中定义的。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号