收藏 分销(赏)

C++运算符.ppt

上传人:xrp****65 文档编号:13186989 上传时间:2026-02-01 格式:PPT 页数:66 大小:338.50KB 下载积分:10 金币
下载 相关 举报
C++运算符.ppt_第1页
第1页 / 共66页
C++运算符.ppt_第2页
第2页 / 共66页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,C+,程序设计,第二章,C+,编程基础,(一),2/1/2026,1,2.1,数据类型和表达式,数据类型,常量,变量,运算符和表达式,2/1/2026,2,2.1.1,数据类型,数据类型是指定义了一组数据以及定义在这一组数据的操作,它是程序中最基本的元素。,C+,数据类型十分丰富,大体上可分为基本类型、空类型、构造类型、指针类型、类类型五种。如,图,2.1-1,所示。,2/1/2026,3,数据类型,基本类型,空类型(无值类型),void,构造类型,类类型,class,指针类型,整型,int,实型(浮点型),字符型,逻辑型,bool,结构类型,struct,数组类型,枚举型类型,enum,联合型类型,union,单精度型,float,双精度型,double,单字符型,char,宽字符型,w-char,图,2.1-1 C+,数据类型,2/1/2026,4,1,、基本类型,基本数据类型有,4,种:整型(,int,)、,浮点型(,float,)、,字符型(,char,)、,逻辑型(,bool,)。,整型数,在计算机内部一般采用定点表示法,用于存储整型量。(如,123,,,-7,等),存储整数的位数依机器的不同而异。,浮点数,和整数不同的地方是浮点数采用的是浮点表示法,也就是说,浮点数的小数点的位置不同,给出的精度也不相同。,字符类型,表示单个字符,一个字符用一个字节存储。,逻辑类型,,也称布尔类型,表示表达式真和假。,2/1/2026,5,2,、空类型,空类型,void,用于显式说明一个函数不返回任何值。还可以说明指向,void,类型的指针,说明以后,这个指针就可指向各种不同类型的数据对象。,2/1/2026,6,3,、构造类型,构造类型又称为组合类型,它是由基本类型按照某种规则组合而成的,。,数组,:,是由具有相同数据类型的元素组成的集合。,结构体:,是由不同的数据类型构成的一种混合的数据结构,构成结构体的成员的数据类型一般不同,并且在内存中分别占据不同的存储单元。,共用体:,是类似于结构体的一种构造类型,与结构体不同的是构成共用体的数据成员共用同一段内存单元。,枚举:,是将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。,2/1/2026,7,4,、指针类型,指针类型变量用于存储另一变量的地址,而不能用来存放基本类型的数据。它在内存中占据一个存储单元。,2/1/2026,8,5,、类类型,类是体现面向对象程序设计的最基本特征,也是体现,C+,与,C,最大的不同之处。类是一个数据类型,它定义的是一种对象类型,由数据和方法组成,描述了属于该类型的所有对象的性质。,2/1/2026,9,2.1.2,常,量,常量是指在程序运行过程中其值不能改变的量。,C+,支持,5,种类型的常量:浮点型、整型、字符型、布尔型和枚举型。常量在程序中一般以自身的存在形式体现其值。常量具有类型属性,类型决定了各种常量在内存中占据存储空间的大小。,2/1/2026,10,1,、整型常量,整型数据表示通常意义上的整数,整型常量可以用十进制、八进制或十六进制表示,占两个字节。,(,1,),十进制常量,是一个带正负号的常数(默认情况下为正数),如,+3,,,-7,等。,(,2,),八进制常量,由数字,0,开头,其后由若干,07,的数字组成,如,0378,,,0123,等。,(,3,),十六进制常量,以,0 x,或,0X,开头,其后由若干,09,的数字及,AF,(,或小写,af,),的字母组成,如,0 x173,,,0 x3af,。,2/1/2026,11,长整型和无符号整数:,整型常量可以后跟字母,l,或,L,表示,long,型(长整数),也可以跟,u,或,U,表示,unsigned,整数(无符号整数),如以下数是合法的:,375u/,无符号整数,12345UL/,无符号长整数,54321L/,长整数,13579ul/,无符号长整数,2/1/2026,12,2,、浮点数常量,浮点数也称为实型数。只能以十进制形式表示。共有两种表示形式:小数表示法和指数表示法。,(,1,),小数表示法,使用这种表示形式时,实型常量分为整数部分和小数部分。其中的一部分可在实际使用时省略,如,10.2,,,.2,,,2.,等。但整数和小数部分不能同时省略。,(,2,),指数表示法,也称科学记数法,指数部分以,E,或,e,开始,而且必须是整数。如果浮点数采用指数表示法,则,E,或,e,的两边都至少要有一位数。如以下数是合法的:,1.2e20,,,-3.4e-2,。,2/1/2026,13,3,、字符常量和字符串常量,(,1,)字符常量,C+,中的字符常量通常是用单引号括起的一个字符。在内存中,字符数据以,ASCII,码存储,如字符,a,的,ASCII,码为,97,。字符常量包括两类,一类是可显示字符,如字母、数字和一些符号,、,+,等,另一类是不可显示字符常量,如,ASCII,码为,13,的字符表示回车。,(,2,),转义字符,转义字符是特殊的字符常量,表示时一般以转义字符,开始,后跟不同的字符表示不同的特殊字符,,表,2.1-1,列出了常用的特殊字符。,2/1/2026,14,名称,符号,空字符,(null),0,换行,(newline),n,换页,(,formfeed,),f,回车,(carriage return),r,退格,(backspace),b,响铃,(bell),a,水平制表,(horizontal tab),t,垂直制表,(vertical tab),v,反斜线,(backslash),问号,(question mark),?,单引号,(single quote),双引号,(double quote),”,表,2.2-1,常用的特殊字符,2/1/2026,15,(,3,)字符串常量,字符串常量是由一对双引号括起来的零个或多个字符序列。,字符串可以写在多行上,不过在这种情况下必须用反斜线,表示下一行字符是这一行字符的延续。,字符串常量实际上是一个字符数组,组成数组的字符除显式给出的外,还包括字符结尾处标识字符串结束的符号,0,,所以字符串“,abc,”,实际上包含,4,个字符:,a,、,b,、,c,和,0,。,需要注意的是,a,和“,a,”,的区别,,a,是一个字符常量,在内存中占一个字节的存储单元,而“,a,”,是一个字符串常量,在内存中占两个字节,除了存储,a,以外,还要存储字符串结尾符,0,。,2/1/2026,16,4,、布尔常量,布尔常量仅有两个:,false,(,假)和,true,(,真)。,2/1/2026,17,5,、枚举常量,枚举常量可以通过建立枚举类型来定义。,枚举类型是一种用户自定义数据类型。在声明枚举类型时,需要把常量的值一一列举出来,形式如下:,enum,枚举类型名,常量值,1,,常量值,2,,,,常量值,n,;,例如声明一个名为,color,的枚举类型:,enum,colorRed,Green,Blue,White,Black;,枚举常量是一种符号常量。,Red,,,Green,等是符号常量,它们表示各个枚举值,在内存中表示以整型数。如果没有专门指定,第一个符号常量的枚举值就是,0,,其他枚举值依次为,1,,,2,,,3,。所以,,C+,自动给,Red,赋,0,,,Green,赋,1,,等等。,2/1/2026,18,6,、符号常量,在,C+,中的常量常用符号常量来表示,即用一个与常量相关的标识符来代替常量出现在程序中,这种相关的标识符称为符号常量。,例如用,pi,表示圆周率,3.1415926,,在程序用用到圆周率时就用,pi,代替。符号常量定义方法如下:,const ,类型,符号常量,=,表达式,;,如:,const float pi=3.1415926,;,注意:常量标识符在程序中只能被引用,而不能被重新赋值。即不能出现在表达式的左边。,2/1/2026,19,2.1.3,变量,变量是在程序执行中其值是可以变化的量。,变量有三个要素:名字、类型和值。,2/1/2026,20,1,、变量名命名,变量名的命名要遵守以下规则:,不能是,C+,保留字。,C+,的保留字如,表,2.2-2,所列。,第一个字符必须是字母或下划线,中间不能有空格。,变量名除了使用,26,个英文大小写字母和数字外,只能使用下划线。,c+,虽然未对变量名的长度进行控制,但它受使用的编译系统的制约。,一般不要超过,31,个字符。,变量名不要与,C+,中的库函数名、类名和对象名相同。,例如,下列变量名是合法的变量名:,a123 c3b file_1,2/1/2026,21,asm,auto,break,case,catch,char,class,const,continue,default,delete,do,double,else,enum,extern,float,for,friend,goto,if,inline,int,long,new,operator,overload,private,protected,public,register,return,short,signed,sizeof,static,struct,switch,this,template,throw,try,typedef,union,unsigned,virtual,void,volatile,while,表,2.2-2,C+,的标准保留字,2/1/2026,22,2,、变量的类型,变量在使用前必须先定义,指出其数据类型。通过类型定义,变量被分配固定的存储空间,直到程序结束时存储空间被释放。变量的操作受类型控制,如整型变量与浮点型变量的操作是不同的。,2/1/2026,23,3,、变量的值,与变量有关的有两个值:一个是变量所表示的数据值,另一个是变量的地址值。例如:,char c,;,c=a;,其中,第一个语句是定义一个变量,其名字为,c,,,其类型为字符型。第二个语句是给变量,c,赋值,使变量所表示的数据值为,a,,,该值便是存放在变量,c,的内存地址中的值,实际上内存中存放的是字符,a,的,ASCII,码值,以整数表示,所以,c+,中整型数据和字符型数据之间可以相互赋值,但要注意其表示的合理范围。例如:下面赋值操作是正确的。,int,a=x;,char,ch,=41;,变量,c,被定义以后,它就在内存中对应着一个内存地址值,在,c+,中许多操作是针对变量的地址进行的,在指针类型一章将详细介绍。,2/1/2026,24,例2.1-1,#include “,iostream.h,”,void main(),int,a;,char,ch,;,for (,ch,=a;,ch,=,z;ch,+),a=,ch,;,cout,a|&,自增自减运算符,+-,赋值运算符,=,及其扩展(,+=-=*=/=%=,等),条件运算符,?:,指针运算符,*,和,&,逗号运算符,分量运算符,.-,函数调用运算符(),下标运算符,求字节运算符,sizeof,强制类型转换运算符:(,type,),2/1/2026,29,1,、算术运算符,(,1,)普通运算符,单目运算符:(取负),(取正),单目运算符比双目运算符优先级高。,双目运算符:、,、(取余),在这五个运算符中,和的优先级比,,-,要高。另外,只适用于,int,型。,/,运算符对于实型做除法运算,结果为小数;对于整型做除法运算,结果为整数。,2/1/2026,30,例,2.1-2,:,int,a,,,b=39,;,a=b/2,;,结果,a,等于,19,。,double x,;,int,c=37,;,x=c/4.0,;,结果为,9.25,2/1/2026,31,(,2,)自增、自减运算符,+,:自增运算符,表示加。,-,:自减运算符,表示减。,这两个运算符都是单目运算符,且功能相近,用户只能将这类操作符应用于变量而不能应用于常量。要替代下列代码:,i=i+1,;,可使用,+i,;,或,i+,;,这里前一种方式称为前缀方式,后一种称为后缀方式,其目的都是使,i,加,1,。二者的区别是:前缀是先将操作数增,1,(或减,1,),然后取操作数的新值参与表达式的运算。后缀是先将操作数增,1,(或减,1,)之前的值参与表达式的运算,到表达式的值被引用之后再做加,1,(或减,1,)运算。,2/1/2026,32,例如:,int,x=0,y;,y=x+x+;,运算结果:,y=0,x=2,2/1/2026,33,注意:,自增、自减运算符有四种应用格式:,int,a=3;b=a+;,等价于,b=a;a=a+1;,int,a=3;b=a-;,等价于,b=a;a=a-1;,(,运算符后置用法,代表先使用变量,然后对变量增值),int,a=3;b=+a;,等价于,a=a+1;b=a;,int,a=3;b=-a;,等价于,a=a-1;b=a;,(,运算符前置用法,代表先对变量增值,再使用变量),2/1/2026,34,注意:,C+,编译器在处理时尽可能多的自左向右将运算符结合在一起。,例如:,a+b,表示为,(a+)+b,而不是,a+(+b),。,在调用函数时,实参的求值顺序一般为自右向左。例如:,int,a=1;,cout,a+a+,,,=,,,c,等价于,(a+b)c,a!=bc,等价于,a!=(bc),由关系运算符组成的关系表达式的值是逻辑型的,即,bool,型。在,C+,中常常将逻辑真用非,0,表示(一般为,1,),逻辑假用,0,表示。,2/1/2026,36,3,、逻辑运算符,&,(逻辑与),,|,(逻辑或),!(逻辑非),逻辑表达式的结果为真则为,1,,结果为假则为,0,。,逻辑非(!)是单目运算符,逻辑与(,&,)与逻辑或(,|,)为双目运算符。,逻辑非的优先级最高,逻辑与次之,逻辑或最低。,逻辑运算真值表如,表,2.2-3,所示。,2/1/2026,37,表,2.2-3,逻辑运算真值表,a,b,a&b,a|b,!a,!b,0,0,0,0,1,1,0,非0,0,1,1,0,非0,0,0,1,0,1,非0,非0,1,1,0,0,2/1/2026,38,4,、赋值运算符,(,1,)赋值运算符“,=,”,的一般格式为:,变量,=,表达式;,表示将其右侧的表达式求出结果,赋给其左侧的变量。例如:,int,i;,i=3*(4+5);/i,的值变为,27,(,2,)赋值表达式本身的运算结果是右侧表达式的值,而结果类型是左侧变量的数据类型。例如:,int,i=1.2*3;/,结果为,3,,而不是,3.6,2/1/2026,39,4,、赋值运算符,(,3,)赋值运算符的结合性是从右至左的,因此,,C+,程序中可以出现连续赋值的情况。例如,下面的赋值是合法的:,int,i,j,k;,i=j=k=10;/i,j,k,都赋值为,10,(,4,)复合运算符:,+=,(加赋值),,-=,(减赋值),,*,=,(乘赋值),,/=,(除赋值),,%=,(求余赋值),,=,(右移位赋值),,&=,(按位与赋值),,=,(按位异或赋值),,|=,(按位或赋值),2/1/2026,40,它们的含义如下:,a+=b,等价于,a=a+b,a-=b,等价于,a=a-b,a*=b,等价于,a=a*b,a/=b,等价于,a=a/b,a%=b,等价于,a=a%b,a=b,等价于,a=a=b,等价于,a=ab,a&=b,等价于,a=a&b,a=b,等价于,a=ab,a|=b,等价于,a=a|b,2/1/2026,41,例:,int,a=12;,a+=a;,表示,a=(a+a)=(12+12)=24;,int,a=12;,a+=a-=a*=a;,表示,a=a*a /a=12*12=144,a=a-a /a=144-144=0,a=a+a /a=0+0=0,2/1/2026,42,5,、条件运算符,(,1,)条件运算符“,?,:”是,C+,中惟一三目运算符,其形式为:,表达式,1,?表达式,2,:表达式,3,它的运算方式为:先计算表达式,1,的值,如果其值为非,0,(真),则表达式,2,的值就是整个表达式的最终结果;否则表达式,3,的值就是整个表达式的值。常见的一个例子为:,max=(ab)?a:b),上面例子定义了一个求两个数,a,和,b,中最大值,其中决定哪一个是最大值用了条件运算符。,2/1/2026,43,(,2,)条件运算符的结合性是自右向左。例如有以下条件表达式:,ab?a:cd?c:d,相当于,ab?a:(cd?c:d),(,3,),条件运算符的优先级别高于赋值运算符,低于关系运算符和算术运算符。例如有:,ab?a-b:b-a,相当于,(,ab)?(a-b):(b-a),2/1/2026,44,6,、逗号运算符,逗号运算符是将多个表达式组成一个表达式。,例如:,d1,,,d2,,,d3,,,d4,这里,d1,、,d2,、,d3,、,d4,都是一个表达式。整个表达式的值由最后一个表达式的值决定。计算顺序是从左至右依次计算各个表达式的值,最后计算的表达式的值和类型便是整个表达式的值和类型。,2/1/2026,45,例如:,int,a=1,,,b,,,c,;,a=,(,b=a+1,,,c=b+2,,,a=c+1,),+a,;,结果是:,a=10,,,b=2,,,c=4,。,for,(,min=0,,,max=length-1,;,minmax,;,min+,,,max-,),这里循环初始,,min=0,,,max=length-1,;,循环条件是,minmax,;,每循环一次,,min,加,1,,,max,减,1,。,逗号运算符的用途仅在于解决只能出现一个表达式的地方却要出现多个表达式的问题。,2/1/2026,46,7,、位运算符,(,1,)位(,bit,),是计算机中表示信息的最小单位,一般用,0,和,1,表示。一个字符在计算机中用,8,个位表示,,8,个位组成一个字节。,C+,语言需要将人们通常所习惯的十进制数表示为二进制、八进制或十六进制数来理解对位的操作。,C+,中所有的位运算符如下:,(按位求反),,(右移),,&,(按位与),,(按位异或),,|,(按位或)。,(,2,)位运算符是对其操作数按其二进制形式逐位进行运算,参加位运算的操作数必须为整数。,2/1/2026,47,8,、,sizeof,运算符(求字节运算符),(,1,),sizeof,运算符是单目运算符,用于计算运算对象在内存中所占字节的多少,它有两种形式:,sizeof,(,类型标识符);,sizeof,表达式;,(,2,),sizeof,可以接受的类型标识符很多,如,sizeof,(,int,),表示求整型数据在内存中所占字节数。,例如:,int,a,,则,sizeof,(,a,),表示求变量,a,在内存中所占字节数。,例如:,int,a10,,则,sizeof,(,a,),表示求数组,a,在内存中所占字节数。,2/1/2026,48,9,、运算符的优先级和结合性,(,1,)优先级,每种运算符都有一个优先级,优先级是用来标志运算符在表达式中的运算顺序的。优先级高的先做运算,优先级低的后做运算,优先级相同的由结合性决定计算顺序。,(高)!,算术运算符,关系运算符,位运算符,,&,、,|,,条件运算符,赋值运算符,逗号运算符(低),详细说明,(,2,)结合性,大多数运算符都是按从左到右计算,只有三类运算符的结合性是从右到左。他们是:单目、三目和赋值。,2/1/2026,49,10,、表达式,表达式是用于计算的式子,它由运算符、运算数和括号组成。最简单的表达式只有一个常量或变量,当表达式中有两个或多个运算符时,表达式称为复杂表达式,其中运算符执行的先后顺序由它们的优先级和结合性决定。执行表达式所规定的运算,所得到的结果值便是表达式的值。,C+,中由于运算符很丰富,因此表达式的种类也很多。常用的表达式有,6,种。,2/1/2026,50,例子:,已知,int,a,;,算术表达式。例如,,a+5.2/3.0-9%5,关系表达式。例如,,m=x,逻辑表达式。例如,!,a&8|7,条件表达式。例如,,a4?+a:-a,赋值表达式。例如,,a=7,逗号表达式。例如,,a+5,a=7,a+=4,2/1/2026,51,书写表达式的注意事项:,在表达式中,连续出现两个运算符时,最好用空格符分隔。如:,a+b;,系统将默认为是,a+b,,,因系统将按尽量取大的原则来分割多个运算符。如果想执行,a,加,+b,,,则应写成:,a+b,;,在写表达式中,有时记不清楚运算符的优先级时,可使用括号来确定运算符组合。,2/1/2026,52,(,1,)算术表达式,算术表达式是由算术运算符和位操作运算符组成的表达式,其表达式的值是一个数值。表达式的类型具体地由运算符和操作数决定。,2/1/2026,53,例2.1-3,#include ,void main(),int,a,b,m=3,n=4;,a=7*2+-3%5-4/3;/-3%5=-3,,,4/3=1,b=m+-n;,cout,atbtmtn,endl,;,执行结果如下:,10 0 4 3,2/1/2026,54,(,2,)关系表达式,由关系运算符组成的表达式为关系表达式。关系表达式的运算结果为逻辑型,常用在条件语句和循环语句中。,2/1/2026,55,例2.1-4,#include ,void main(),char x=m,y=n;,int,n;,n=xy;,cout,n,endl,;,n=x=y-1;,cout,n,endl,;,n=(y!=Y)+(53)+(y-x=1);,cout,nb?x=4:x=9;,条件表达式的值取决于?前面的表达式的值,该表达式的值为非,0,时,整个表达式的值为:前面的表达式的值,否则为:后面的表达式的值。,2/1/2026,59,例2.1-5,#include ,void main(),int,a=3,b=4,c;,c=ab?+a:+b;,cout,a,b,c,endl,;,c=a-b?a-3?b:b-a:a;,cout,a,b,c,endl,;,该程序执行的结果为:,355,352,2/1/2026,60,(,5,)赋值表达式,由赋值运算符组成的表达式为赋值表达式。赋值运算符除了“,=”,之外还有十个复合运算符,这是赋值和运算相结合的运算符。,赋值运算符的结合性是由右至左,因此,,C+,程序中允许出现连赋值的情况。例如下面的赋值是合法的。,int,a,b,c,d;,a=b=c=d=5/2;,这里先计算,5/2,结果为,2,,再赋值给,d,,,结果,d=5/2,表达式的值为,2,,再将这个值赋给,c,,,以此类推,结果,a,、,b,、,c,、,d,的值均为,2,。,再计算复合赋值运算符表达式中,首先计算右值表达式的值后再与左值运算。例如:,int,a=3,,,b=4,;,a*=b+1,;,这里先计算,b+1,等于,5,,再与,a,相乘赋值给,a,,,结果等于,15,。,2/1/2026,61,(,6,)逗号表达式,逗号表达式是用逗号将若干个表达式连起来组成的表达式。该表达式的值是组成逗号表达式的若干个表达式中的最后一个表达式的值,类型也是最后一个表达式的类型。,逗号表达式的计算顺序是自左至右。,2/1/2026,62,例2.1-6,#include ,void main(),int,a,b,c;,a=1,b=2,c=a+b+3;,cout,a,b,c,endl,;,c=(a+,a+=b,a-b);,cout,a,b,c,endl,;,输出结果如下:,1,,,2,,,6,4,,,2,,,2,2/1/2026,63,11,、数据类型转换,C+,中数据类型转换有两类,即隐式类型转换和显式类型转换。,(,1,)隐式类型转换,隐式类型转换是由编译器自动完成的类型转换。当编译器遇到不同类型的数据参与同一运算时,会自动将它们转换为相同类型后再进行运算,赋值时会把所赋值的类型转换为与被赋值变量类型一样。隐式类型转换按从低到高的顺序进行,如,图,2.1-2,所示。,2/1/2026,64,整型,(,int,),短整型,字符型,(short,char),单精度浮点型,(float),双精度浮点型,(double),无符号长整型,(unsigned long),长整型,(long),无符号整型,(unsigned),图,2.1-2,数据类型转换的顺序,2/1/2026,65,(,2,)显式类型转换,显式类型转换(强制类型转换)是由程序员显式指出的类型转换,转换形式有两种:,类型名(表达式),(类型名)表达式,这里的“类型名”是任何合法的,C+,数据类型,例如,float,、,int,等。通过类型的显式转换可以将“表达式”转换成适当的类型。,例如:,double f=3.6;,int,n=(,int)f,;,这样,n,为,3,。,2/1/2026,66,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服