C++_Chapter2

上传人:仙*** 文档编号:253070308 上传时间:2024-11-28 格式:PPT 页数:36 大小:324KB
收藏 版权申诉 举报 下载
C++_Chapter2_第1页
第1页 / 共36页
C++_Chapter2_第2页
第2页 / 共36页
C++_Chapter2_第3页
第3页 / 共36页
资源描述:

《C++_Chapter2》由会员分享,可在线阅读,更多相关《C++_Chapter2(36页珍藏版)》请在装配图网上搜索。

1、,,,,,,,单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,第五级,,,,*,1,第,2,章 数据类型与表达式,2.0,字节,,2.1 C++,的数据类型,,2.2,常量,,2.3,变量,,2.4 C++,的运算符,,2.5,算术运算符与算术表达式,,2.6,赋值运算符与赋值表达式,,2.7,逗号运算符与逗号表达式,,2.8,各类运算符的优先级,2,2.0,字节,字节,(Byte),是计算机用于计量存储容量和传输容量的一种计量单位,,1,个字节等于,8,位二进制。,,一个二进制数字序列,,,在计算机中作为一个数字单元,,,一般为,8,位二进制数,换

2、算为十进制。最小值:,0,最大值:,255,。,,目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局,(ANSI),制定的,ASCII,码(,American Standard Code for Information Interchange,,美国标准信息交换码),如一个,ASCII,码就是一个字节,在,ASCII,码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。,,3,2.1 C++,的数据类型,计算机处理的对象是数据,而数据是以某种特定的形式存在的(例如整数、浮点数、字符等形式)。不同的数据之间往往还存在某些联系(例如由若干个整数组成一个整数数组)

3、。,,C++,可以使用的数据类型如下:,4,,整型,短整型,(short int),整型,(int),长整型,(long int),字符型,(char),,浮点型,单精度型,(float),双精度型,(double),长双精度型,(long double),,基本类型,,数据类型,指针类型引用类型,,构造类型,布尔型,(bool),构造类型 枚举类型,(enum),数组类型 结构体类型,(struct),共用体类型,(union),类类型,(class),,5,主类型,分类型,修饰符,占用空间,表示范围,整型,数型,int,short,2,字

4、节,-32768~32767,,,Long,(默认,),4,字节,-2,31,~ (2,31,-1),,,unsigned short,2,字节,0~65535,,,unsigned long,4,字节,0~(2,32,-1),实型,浮点型,float,单精度型,4,字节,-3.4E38~3.4E38,,,双精度型,double,8,字节,-1.7E308~1.7E308,字符型,字符型,char,signed,(默认),1,字节,-128~127,,,unsigned,1,字节,0~255,逻辑型,布尔型,bool,无,1,字节,0~1,常用数据类型,精度、数值范围和在内存中所占的字节数,(

5、VC),6,2.2,常量,常量的值是不能改变的。,,常量包括四大类:,,数值型常量,(,即常数,),。如,12,,,0,,,-3,为整型常量,,4.6,,,-1.23,为实型常量。数值型常量在内存中以二进制的形式存放。,,字符型常量。包含在两个单撇号之间的字符为字符常量,如,′a′,′x′,。 ①字符常量只能包括一个字符,如,′AB′,是不合法的。②字符常量区分大小写字母,如,′A′,和,′a′,是两个不同的字符常量。,③,除了以上形式的字符常量外,,C++,还允许用一种特殊形式的字符常量,就是以,“,\,”,开头的字符序列。例如,,′,\,n′,代表一个,“,换行,”,符。,“,\,”,称为

6、转义字符。,7,字符串常量。用双撇号括起来的部分就是字符串常量,如,″abc″,,,″Hello!″,,,″a+b″,,,″Liping″,都是字符串常量。,,符号常量。为了编程和阅读的方便,在,C++,程序设计中,常用一个符号名代表一个常量,称为符号常量,即以标识符形式出现的常量。(如,#define PRICE 30,,,PRICE,代表,30,),,8,例,:,符号常量的使用,#include ,,using namespace std;,,#define PRICE 30,//注意这不是语句,末尾不要加分号,,int main ( ),,{,,,int num, total;,,,n

7、um=10;,,,total=num * PRICE;,,,cout<<"total="<

8、3,变量,2.3.1,什么是变量,,在程序运行期间其值可以改变的量称为变量。在设计程序的时候,我们把要存储的数据放在一个叫变量(,Variable,)的东西里。它就好像是一个箱子,而数据就是箱子里的物品。,11,当然,在我们放东西和取东西之前必须要创建这么一个箱子,这条创建变量的语句又称为变量的声明(,Declaration,)。它的语句格式为:,,变量数据类型 变量名,1[,,变量名,2,,,……,变量名,n],;,(,其中,[,…,],中的内容是可选的,),,比如:,,float a,b,c,d,e;,,float a=83.5,b,c=64.5,d=81.2*8.0,e;,,char c

9、;,,string s; //,因为,string,不是基本数据类型,实际上它是,C++,定义的一个类,因而用之前必须添加,#include ,。,12,2.3.2,变量名规则,,不能是可能与,C++,中语句混淆的单词,,第一个字符必须是字母或者是下划线,,大小写不同的变量名表示两个不相同的变量,,变量名中不应包括除字母、数字和下划线以外的字符,,变量名应该尽量符合变量里面存放东西的特征。比如,iNumOfStudent,是表示学生数的整型变量,,fResult,是表示结果的浮点型变量等等。,,,13,2.3.3,常变量,,在定义变量时,如果加上关键字,const,,则变量的值在程序运行期

10、间不能改变,这种变量称为常变量,(constant variable),。例如,,,const int,MAX,=3; //,用,const,来声明这种变量的值不能改变,指定其值始终为,3,,const int,MAX_LENGTH,=3+6,,MAX_WEIGHT,=3*cos(1.5); //,MAX_LENGTH,的值被指定为,9,,,MAX_WEIGHT,的值被指定为,3*cos(1.5),,常量命名全用大写的字母,用下划线分割单词,,,14,但应注意,由于使用了系统标准数学函数,cos,,必须将包含该函数有关的信息的头文件,“,cmath,”,(,或,mat

11、h.h),包含到本程序单位中来,可以在本程序单位的开头加上以下,#include,命令:,,#include ,或,#include ,,15,符号常量与常变量的区别,符号常量用一符号代替常量值,(如,#define PRICE 30,,,PRICE,代表,30,),,在预编译时将所有符号常量替换为指定的字符串,没有类型,不分配存储单元。常变量,(,如,const int a=3; ),具有变量特征,分配内存单元,只是其值不能被改变而已。因此常变量又称为只读变量,(read-only-variable),。,16,常变量的优点,常变量的存储和引用与变量相同,但不能修改。常变量的值在内存中只赋值

12、一次,但可以多次引用。程序中如果直接使用常数,用一次就要赋值一次。要修改的话也要多处修改。常变量只要修改一次。,,如果用的变量前面不加,const,,说不定什么时候就对变量值做了修改。通过这种简单安全机制使你写不出那种说不定是什么时候就会掉过头来咬你一口的代码 。,17,2.4 C++,的运算符,(,0,)表达式、运算符和操作数,,在计算机语言中,表达式(,expressions,,)包含操作数(,operands,)和运算符(,operators,,)两类元素。操作数是运算或操作对象,,,运算符作用于一个或多个操作数产生出另一个值。运算符作用于一个或多个操作数的结构表达方式称为表达式。也就

13、是说,用运算符将运算对象连接起来的、符合,C++,语法规则的式子,称为,C++,表达式。例如,对于,“,5 +,x,”,,,x,和,5,是操作数,,+,是操作符,,5 +,x,,是表达式。一个表达式包含至少一个操作数。,运算所需操作数为一个的运算符叫单目运算符,运算所需操作数两个的运算符叫双目运算符,运算所需操作数为三个的运算符叫三目运算符。,18,(1),算术运算符,,,+(,加,),,,-(,减,),, *,(,乘,),,,/(,除,),,,%(,整除求余,),,,++(,自加,),,,--(,自减,),等。,,(2),关系运算符,,>,(,大于,),,<,(,小于,),, ==,(,等

14、于,),,>=,(,大于或等于,),,<=,(,小于或等于,),,!=,(,不等于,),等。,,(,3,),逻辑运算符,,&&,(,逻辑与,),,,||(,逻辑或,),, !,(,逻辑非,),,(,4,),位运算符 (针对二进制操作 ,不做介绍),,,<<(,按位左移,),,,>>(,按位右移,),, &,(,按位与,),,,|(,按位或,),, ∧,(,按位异或,),,,~(,按位取反,),。,,(,5,),赋值运算符 (=及其扩展赋值运算符),,,19,(,6,),条件运算符,(? : ),,(,7,),逗号运算符,(,,,),,(,8,),指针运算符,(*),,(9),引用运

15、算符和地址运算符,(,&,),,(10),求字节数运算符(sizeof),,(11),强制类型转换运算符(,(,类型,),或类型,( ),),,(12),成员运算符 (,.,),,(13),指向成员的运算符 (,->,),,(14),下标运算符 ([ ]),,(15),其他 (如函数调用运算符()),,本章主要介绍算术运算符与算术表达式,赋值运算符与赋值表达式,逗号运算符与逗号表达式,其他运算符将在以后各章中陆续介绍。,20,2.5,算术运算符与算术表达式,2.5.1,基本的算术运算符,,+(加法运算符,或正值运算符。如,3+5,,,+3,),,-(减法运算符,或负值运算符。如,5-2,,,-

16、3,),,*,(,乘法运算符。如,3*5),,/(除法运算符。如,5/3,),,%(模运算符,或称求余运算符,%两侧均应为整型数据,如7%4的值为3)。,,21,2.5.2,算术表达式和运算符的优先级与结合性,,用算术运算符和括号将运算对象,(,操作数,),连接起来的、符合,C++,语法规则的式子,称,C++,算术表达式。,,C++,语言规定了运算符的优先级,(,例如先乘除后加减,),和结合性,(,算术运算符的结合方向为,“,自左至右,”,,,赋值运算符是,“,自右至左,”,)。,22,在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则为,:,总是转换为精度更大的数据类型

17、,,字符数据转换为整数,,short,型转为,int,型,,float,型数据在运算时转换成双精度型,以提高运算精度。,23,2.5.4,自增和自减运算符,,在,C,和,C++,中,常在表达式中使用自增,(++),和自减,(--),运算符,他们的作用是使变量的值增,1,或减,1,,如,,++i,(在使用,i,之前,先使,i,的值加,1,,如果,i,的原值为,3,,则执行,j=++i,后,,j,的值为,4, i,的值也是,4,),,--i (,在使用,i,之前,先使,i,的值减,1,,如果,i,的原值为,3,,则执行,j=--i,后,,j,的值为,2,,,i,的值也是,2),,i++ (,在使用

18、,i,之后,使,i,的值加,1,,如果,i,的原值为,3,,则执行,j=i++,后,,j,的值为,3,,然后,i,变为,4),,i--(,在使用,i,之后,使,i,的值减,1,,如果,i,的原值为,3,,则执行,j=i--,后,,j,的值为,3,,然后,i,变为,2),,24,2.5.5,强制类型转换运算符,,强制类型转换的一般形式为,,(类型名)(表达式),,(,int,),x,或 (,int,),(x+y),,,如:,,(double),a (将,a,转换成,double,类型,),,(,int,)(,x+y,) (将,x+y,的值转

19、换成整型),,(,float,),(5%3),(将,5%3,的值转换成,float,型),25,例,2.4,强制类型转换。,,#include ,,using namespace std;,,int main( ),,{,,float x;,,int i;,,x=3.6;,,i=(int)x;,,cout<<"x="<

20、赋给变量,a,。也可以将一个表达式的值赋给一个变量。,,27,2.6.2,赋值过程中的类型转换,,如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时会自动进行类型转换。,,(1),将浮点型数据(包括单、双精度)赋给整型变量时,舍弃其小数部分。,,(2),将整型数据赋给浮点型变量时,数值不变,但以指数形式存储到变量中。,,(3),将一个,double,型数据赋给,float,变量时,要注意数值范围不能溢出。,,(4),字符型数据赋给整型变量,将字符的,ASCII,码赋给整型变量。,28,2.6.3,复合的赋值运算符,,在,赋值符,“,=,”,之前加上其他运算符,,可以构成复合的运算

21、符。如果在,“,=,”,前加一个,“,+,”,运算符就成了复合运算符,“,+=,”,。例如,可以有,,,a+=3,等价于,a=a+3,,x*=y+8,等价于,x=x*(y+8),,x%=3,等价于,x=x%3,,以,“,a+=3,”,为例来说明,它相当于使,a,进行一次自加,3,的操作。即先使,a,加,3,,再赋给,a,。同样,,“,x*=y+8,”,的作用是使,x,乘以(,y+8,),再赋给,x,。,29,为便于记忆,可以这样理解:,,①,a+= b (,其中,a,为变量,,b,为表达式,),,②,a+,= b (,将有下划线的,“,a+,”,移到,“,=,”,右侧,)

22、,,,③ a = a + b,(在,“,=,”,左侧补上变量名,a,),,注意,如果,b,是包含若干项的表达式,则相当于它有括号。如,,①,x %= y+3,,②,x %,= (y+3),,,③ x = x%(y+3),(不要错认为,x=x%y+3,),,,,30,凡是二元(二目)运算符,都可以与赋值符一起组合成复合赋值符。,C++,可以使用以下几种复合赋值运算符:,,+=,-=,*=,/=,%=,,<<,=,,>>,=,,&,=,∧=,,|,=,,其中后,5,种是有关位运算的。,31,2.6.4,赋值表达式,,由赋值运算符将一个变量和一个表达式连接起来的式子称为,“,赋值表达式,”,。它的

23、一般形式为,,<,变量,> <,赋值运算符,> <,表达式,>,,如,“,a=,5,”,是一个赋值表达式,,“,a=5+8,”,也是一个赋值表达式。对赋值表达式求解的过程是:先求赋值运算符右侧的,“,表达式,”,的值,然后赋给赋值运算符左侧的变量。一个表达式应该有一个值。赋值运算符左侧的标识符称为,“,左值,”,(left value,,简写为,lvalue),。,并不是任何对象都可以作为左值的,变量可以作为左值,而表达式,a+b,就不能作为左值,常变量也不能作为左值,因为常变量不能被赋值。,32,出现在赋值运算符右侧的表达式称为,“,右值,”,(right value,,简写为,rvalue

24、),。显然左值也可以出现在赋值运算符右侧,因而左值都可以作为右值。如,,int a=3,b,c;,,b=a; // b,是左值,,c=b; // b,也是右值,,赋值表达式也有值,赋值表达式的值,就是所赋的值,因而赋值表达式中的,“,表达式,”,,又可以是一个赋值表达式。如,,a=(b=5),,下面是赋值表达式的例子:,,,a=b=c=5 //,赋值表达式值为,5,,,a,,,b,,,c,值均为,5,,a=5+(c=6) //,表达式值为,11,,,a,值为,11,,,c,值为,6,,a=(b=4)+(

25、c=6) //,表达式值为,10,,,a,值为,10,,,b,等于,4,,,c,等于,6,,a=(b=10)/(c=2) //,表达式值为,5,,,a,等于,5,,,b,等于,10,,,c,等于,2,,33,请分析赋值表达式:,(a=3*5)=4*3,#include //,包含头文件,iostream,,using namespace std; //,使用命名空间,std,,int main( ),,{,,int c,a;,,(a=3*5)=4*3; //,先将,3*5,的,15,赋给,a,,,a=15,结果; 再 将,4*3,的结果,12,赋给表达式,a=3*5,

26、,表达式的值为,12,,,a,的值也是,12,。,,,c=((a=3*5)=4*3);,,cout<< "c=" << c <<" "<< "a =" << a << endl;,,return 0;,,},34,2.7,逗号运算符与逗号表达式,C++,提供一种特殊的运算符,——,逗号运算符。用它将两个表达式连接起来。如,,3+5,6+8,,,称为逗号表达式,又称为,“,顺序求值运算符,”,。,,逗号表达式的一般形式为,,表达式1,表达式2,,逗号表达式的求解过程是:先求解表达式,1,,再求解表达式,2,。整个逗号表达式的值是表达式,2,的值。如,以下的逗号表达式的值是,60,,,a,的

27、值是,15,。,,,a=3*5,a*4,,35,赋值运算符的优先级别高于逗号运算符, 因此应先求解,a=3*5,(也就是把,“,a=3*5,”,作为一个表达式)。经计算和赋值后得到,a,的值为,15,,然后求解,a*4,,得,60,。整个逗号表达式的值为,60,。,,一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如,,(a=3*5,a*4),a+5,,逗号表达式的一般形式可以扩展为,,表达式1,表达式2,表达式3,,…,,表达式n,,它的值为表达式n的值。,36,各类运算符的优先级,初等运算,:( ), [ ], -,>,等,单目运算,:,!,, -, ++, -- , *, &,等,算术运算符,:,先乘除后加减,关系运算符,:, >=,等,逻辑运算符,:&&,||,等,条件运算符,: ?:,等,,,,如:,max =(a>b)? a:b;,赋值运算符,:=,等,逗号运算符,:,顺序求值“,,“,

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

相关资源

更多
正为您匹配相似的精品文档

相关搜索

关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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