C++_Chapter2

上传人:仙*** 文档编号:253070308 上传时间:2024-11-28 格式:PPT 页数:36 大小:324KB
返回 下载 相关 举报
C++_Chapter2_第1页
第1页 / 共36页
C++_Chapter2_第2页
第2页 / 共36页
C++_Chapter2_第3页
第3页 / 共36页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,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,位二进制数,换算为十进制。最小值:,0,最大值:,255,。,目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局,(ANSI),制定的,ASCII,码(,American Standard Code for Information Interchange,,美国标准信息交换码),如一个,ASCII,码就是一个字节,在,ASCII,码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。,3,2.1 C+,的数据类型,计算机处理的对象是数据,而数据是以某种特定的形式存在的(例如整数、浮点数、字符等形式)。不同的数据之间往往还存在某些联系(例如由若干个整数组成一个整数数组)。,C+,可以使用的数据类型如下:,4,整型,短整型,(short int),整型,(int),长整型,(long int),字符型,(char),浮点型,单精度型,(float),双精度型,(double),长双精度型,(long double),基本类型,数据类型,指针类型引用类型,构造类型,布尔型,(bool),构造类型 枚举类型,(enum),数组类型 结构体类型,(struct),共用体类型,(union),类类型,(class),5,主类型,分类型,修饰符,占用空间,表示范围,整型,数型,int,short,2,字节,-3276832767,Long,(默认,),4,字节,-2,31, (2,31,-1),unsigned short,2,字节,065535,unsigned long,4,字节,0(2,32,-1),实型,浮点型,float,单精度型,4,字节,-3.4E383.4E38,双精度型,double,8,字节,-1.7E3081.7E308,字符型,字符型,char,signed,(默认),1,字节,-128127,unsigned,1,字节,0255,逻辑型,布尔型,bool,无,1,字节,01,常用数据类型,精度、数值范围和在内存中所占的字节数,(VC),6,2.2,常量,常量的值是不能改变的。,常量包括四大类:,数值型常量,(,即常数,),。如,12,,,0,,,-3,为整型常量,,4.6,,,-1.23,为实型常量。数值型常量在内存中以二进制的形式存放。,字符型常量。包含在两个单撇号之间的字符为字符常量,如,a,x,。 字符常量只能包括一个字符,如,AB,是不合法的。字符常量区分大小写字母,如,A,和,a,是两个不同的字符常量。,除了以上形式的字符常量外,,C+,还允许用一种特殊形式的字符常量,就是以,“,”,开头的字符序列。例如,,n,代表一个,“,换行,”,符。,“,”,称为转义字符。,7,字符串常量。用双撇号括起来的部分就是字符串常量,如,abc,,,Hello!,,,a+b,,,Liping,都是字符串常量。,符号常量。为了编程和阅读的方便,在,C+,程序设计中,常用一个符号名代表一个常量,称为符号常量,即以标识符形式出现的常量。(如,#define PRICE 30,,,PRICE,代表,30,),8,例,:,符号常量的使用,#include ,using namespace std;,#define PRICE 30,/注意这不是语句,末尾不要加分号,int main ( ),int num, total;,num=10;,total=num * PRICE;,couttotal=totalendl;,return 0;,9,字符数据在内存中的存储形式及其使用方法,将一个字符常量存放到内存单元时,实际上并不是把该字符本身放到内存单元中去,而是将该字符相应的,ASCII,代码放到存储单元中。如果字符变量,c1,的值为,a,c2,的值为,b,,则在变量中存放的是,a,的,ASCII,码,97,,,b,的,ASCII,码,98,,实际上在内存中是以二进制形式存放的。,两个字符数据进行算术运算,此时相当于对它们的,ASCII,码进行算术运算。,10,2.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;,string s; /,因为,string,不是基本数据类型,实际上它是,C+,定义的一个类,因而用之前必须添加,#include ,。,12,2.3.2,变量名规则,不能是可能与,C+,中语句混淆的单词,第一个字符必须是字母或者是下划线,大小写不同的变量名表示两个不相同的变量,变量名中不应包括除字母、数字和下划线以外的字符,变量名应该尽量符合变量里面存放东西的特征。比如,iNumOfStudent,是表示学生数的整型变量,,fResult,是表示结果的浮点型变量等等。,13,2.3.3,常变量,在定义变量时,如果加上关键字,const,,则变量的值在程序运行期间不能改变,这种变量称为常变量,(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,”,(,或,math.h),包含到本程序单位中来,可以在本程序单位的开头加上以下,#include,命令:,#include ,或,#include ,15,符号常量与常变量的区别,符号常量用一符号代替常量值,(如,#define PRICE 30,,,PRICE,代表,30,),,在预编译时将所有符号常量替换为指定的字符串,没有类型,不分配存储单元。常变量,(,如,const int a=3; ),具有变量特征,分配内存单元,只是其值不能被改变而已。因此常变量又称为只读变量,(read-only-variable),。,16,常变量的优点,常变量的存储和引用与变量相同,但不能修改。常变量的值在内存中只赋值一次,但可以多次引用。程序中如果直接使用常数,用一次就要赋值一次。要修改的话也要多处修改。常变量只要修改一次。,如果用的变量前面不加,const,,说不定什么时候就对变量值做了修改。通过这种简单安全机制使你写不出那种说不定是什么时候就会掉过头来咬你一口的代码 。,17,2.4 C+,的运算符,(,0,)表达式、运算符和操作数,在计算机语言中,表达式(,expressions,)包含操作数(,operands,)和运算符(,operators,)两类元素。操作数是运算或操作对象,运算符作用于一个或多个操作数产生出另一个值。运算符作用于一个或多个操作数的结构表达方式称为表达式。也就是说,用运算符将运算对象连接起来的、符合,C+,语法规则的式子,称为,C+,表达式。例如,对于,“,5 +,x,”,,,x,和,5,是操作数,,+,是操作符,,5 +,x,是表达式。一个表达式包含至少一个操作数。,运算所需操作数为一个的运算符叫单目运算符,运算所需操作数两个的运算符叫双目运算符,运算所需操作数为三个的运算符叫三目运算符。,18,(1),算术运算符,+(,加,),,,-(,减,),, *,(,乘,),,,/(,除,),,,%(,整除求余,),,,+(,自加,),,,-(,自减,),等。,(2),关系运算符,(,大于,),,,(,小于,),, ,(,等于,),,,(,大于或等于,),,,(,小于或等于,),,!,(,不等于,),等。,(,),逻辑运算符,(,逻辑与,),,,|(,逻辑或,),, !,(,逻辑非,),(,),位运算符 (针对二进制操作 ,不做介绍),(,按位右移,),, ,(,按位与,),,,|(,按位或,),, ,(,按位异或,),,,(,按位取反,),。,(,),赋值运算符 (及其扩展赋值运算符),19,(,),条件运算符,(? : ),(,),逗号运算符,(,,,),(,),指针运算符,(*),(9),引用运算符和地址运算符,(,),(10),求字节数运算符(),(11),强制类型转换运算符(,(,类型,),或类型,( ),),(12),成员运算符 (,.,),(13),指向成员的运算符 (,-,),(14),下标运算符 ( ),(15),其他 (如函数调用运算符(),本章主要介绍算术运算符与算术表达式,赋值运算符与赋值表达式,逗号运算符与逗号表达式,其他运算符将在以后各章中陆续介绍。,20,2.5,算术运算符与算术表达式,2.5.1,基本的算术运算符,(加法运算符,或正值运算符。如,3+5,,,+3,),(减法运算符,或负值运算符。如,5-2,,,-3,),*,(,乘法运算符。如,3*5),(除法运算符。如,5/3,),(模运算符,或称求余运算符,两侧均应为整型数据,如的值为)。,21,2.5.2,算术表达式和运算符的优先级与结合性,用算术运算符和括号将运算对象,(,操作数,),连接起来的、符合,C+,语法规则的式子,称,C+,算术表达式。,C+,语言规定了运算符的优先级,(,例如先乘除后加减,),和结合性,(,算术运算符的结合方向为,“,自左至右,”,赋值运算符是,“,自右至左,”,)。,22,在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则为,:,总是转换为精度更大的数据类型,,字符数据转换为整数,,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+ (,在使用,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,转换成,double,类型,),(,int,)(,x+y,) (将,x+y,的值转换成整型),(,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;,coutx=x,i= iendl;,return 0;,26,2.6,赋值运算符与赋值表达式,2.6.1,赋值运算符,赋值符号,“,”,就是赋值运算符,它的作用是将一个数据赋给一个变量。如,“,a=3,”,的作用是执行一次赋值操作(或称赋值运算)。把常量,3,赋给变量,a,。也可以将一个表达式的值赋给一个变量。,27,2.6.2,赋值过程中的类型转换,如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时会自动进行类型转换。,(1),将浮点型数据(包括单、双精度)赋给整型变量时,舍弃其小数部分。,(2),将整型数据赋给浮点型变量时,数值不变,但以指数形式存储到变量中。,(3),将一个,double,型数据赋给,float,变量时,要注意数值范围不能溢出。,(4),字符型数据赋给整型变量,将字符的,ASCII,码赋给整型变量。,28,2.6.3,复合的赋值运算符,在,赋值符,“,”,之前加上其他运算符,,可以构成复合的运算符。如果在,“,”,前加一个,“,”,运算符就成了复合运算符,“,”,。例如,可以有,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+,”,移到,“,=,”,右侧,), 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,赋值表达式,由赋值运算符将一个变量和一个表达式连接起来的式子称为,“,赋值表达式,”,。它的一般形式为, ,如,“,5,”,是一个赋值表达式,,“,a=5+8,”,也是一个赋值表达式。对赋值表达式求解的过程是:先求赋值运算符右侧的,“,表达式,”,的值,然后赋给赋值运算符左侧的变量。一个表达式应该有一个值。赋值运算符左侧的标识符称为,“,左值,”,(left value,,简写为,lvalue),。,并不是任何对象都可以作为左值的,变量可以作为左值,而表达式,a+b,就不能作为左值,常变量也不能作为左值,因为常变量不能被赋值。,32,出现在赋值运算符右侧的表达式称为,“,右值,”,(right value,,简写为,rvalue),。显然左值也可以出现在赋值运算符右侧,因而左值都可以作为右值。如,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)+(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,,表达式的值为,12,,,a,的值也是,12,。,c=(a=3*5)=4*3);,cout c= c a = a ,等,单目运算,:,!, -, +, - , *, &,等,算术运算符,:,先乘除后加减,关系运算符,:, =,等,逻辑运算符,:&,|,等,条件运算符,: ?:,等,如:,max =(ab)? a:b;,赋值运算符,:=,等,逗号运算符,:,顺序求值“,“,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


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

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


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