收藏 分销(赏)

第2章 运算符和表达式.ppt

上传人:pc****0 文档编号:13169060 上传时间:2026-01-29 格式:PPT 页数:84 大小:710KB 下载积分:10 金币
下载 相关 举报
第2章 运算符和表达式.ppt_第1页
第1页 / 共84页
第2章 运算符和表达式.ppt_第2页
第2页 / 共84页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,2,章,运算符,和表达式,程序与数据的关系,数据的输入,程序由,数据的处理,三部分组成,数据的输出,数据是程序处理的对象和结果。,数值数据的种类,常量:在程序运行过程中,其,值不能被改变的量;,变量:在程序运行过程中,其,值能被改变的量。,变量的三要素,变量的标识符(变量名),变量的值,变量的数据类型,3,a,存储单元,变量名,变量值,标识符的命名规则,由英文字母、数字和下划线组成,且必须以英文字母或下划线开头;,不允许使用保留字作标识符的名字,也不应该跟库函数名重名;,标识符命名应以直观且易于拼读为宜,最好使用英文单词及其组合,力争做到“见名知意”,以便于记忆和阅读;,标识符区分大、小写,,sum,、,Sum,、,SUM,是三个不同的标识符,常用的是小写,少数场合要用大写字母开头,个别场合要全部大写。,变 量 的 定 义,变量必须遵循,“,先定义,后使用,”,的原则,即每个变量在使用之前都要用变量定义语句将其声明为某种具体的数据类型。,变量定义语句的形式如下:,类型关键字,变量名,简单数据类型,基本整型,int,短整型,short,长整型,long,无符号整型,unsigned int,无符号短整型,unsigned short,无符号长整型,unsigned long,字符型,char,整数类型,简单数据类型,字符型,短整型数,32767,加,1,后等于多少,?,#include,void main(),short a,b;,a=32767;,b=a+1;,cout“a=”a“,b=”bendl;,#include,void main(),cout“char:”sizeof(,char,)endl;,cout“short:”sizeof(,short,)endl;,cout“int:”sizeof(,int,)endl;,cout“long:”sizeof(,long,)endl;,变量定义数据类型的目的,1.,决定了编译系统为该类型变量分配内存单元的字节数;,2.,决定了该类型变量内存单元中能够存放的数据类型;,3.,决定了该类型变量数据的存放形式;,4.,决定了该类型变量的合法取值范围;,5.,决定了该类型变量可参与的运算种类。,1.,决定了编译系统为该类型变量分配内存单元的字节数,基本整型,int,4 32,短整型,short 2 16,长整型,long 4 32,无符号整型,unsigned int 4 32,无符号短整型,unsigned short 2 16,无符号长整型,unsigned long 4 32,字符型,char 1 8,整数类型,简单数据类型,字符型,2.,决定了该类型变量存储单元中能够存放的数据类型,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,字符型,短整型,短整型变量的存储空间可以存放字符型变量的数据,字符型变量的存储空间不能存放,256,以上的短整型数据。,举例:,无处存放,#include,void main(),short i=289;,char c;,c=i;,coutcendl;,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,short i=289;,0,0,1,0,0,0,0,1,char,char c;,c=i;,coutcendl;,c=33,(,!,号的,ASCII,码),3.,决定了该类型变量数据的存放形式,整型数据在内存中的存放形式,short int i,;,i=10,;,10=,(,1010,),2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,+,short int j,;,j=-10,;,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,-,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,整型数值都是以补码的形式存放的,字符型数据在内存中的存放形式,char c=a,;字符,a,的,ASCII,码是,97,c,97,0,1,1,0,0,0,0,1,实际上在,1,个字节的空间里存放的是,字符所对应的,ASCII,码的码值,4.,决定了该类型变量的合法取值范围,(以短整型为例),0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,+32767,-32768,有符号短整型数的数值范围是:,-32768 +32767,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,65535,无符号短整型数的数值范围是:,0 65535,无符号短整型数,5.,决定了该类型变量可参与的运算种类,例如:求余运算符,%,规定:,(,被除数,)a%b,(除数)(,a,、,b,均为整数),5%3=2,只有整数能参与求余运算,使用变量时的注意事项,使用变量的基本原则:必须“,先定义,后使用,”;,2.注意区分变量名和变量值的概念。变量名标识一个 具体的存储单元,变量值则是存放在存储单元中的数据;,3.int型变量隐含的修饰类型是,有,符号(signed);,4.变量所占存储空间的大小,可用sizeof(int)之类的方式进行测定;,5.注意char型数据与int型数据之间的关系。char型数据以其ASCII码值参与int型的运算和存储;,基本运算符,基本算术运算符,+(,加法运算符、取正运算符,),(,减法运算符、取负运算符,),*(,乘法运算符,),/(,除法运算符,),%(,求余运算符或称模运算符,),算术运算符的优先级和结合性,+,取正,-,取负,*乘法,/,除法,%,求余,+,加法,-,减法,单目运算符,2,级 右结合性,双目运算符,3,级 左结合性,双目运算符,4,级 左结合性,3,-5,-1,-3,-,-2,-3,5,-1,-,3,2,求余运算,余数符号跟被除数相同,5/3=1,,,-5/3=-1,除法运算,商“向零取整”舍去小数部分,使用算术运算符的注意事项,两个整型数相除的结果仍为整型数,且采用商,“向零取整”的原则舍去小数部分;,在求余运算中,两操作数均为整型数,余数的符号跟被除数相同;,任务,2,-,1,整型变量,a,的初值等于,12,,,通过下列表达式的运算,,,a,的终值是多少,?,a+=a-=a*a;,赋值运算符,=,a=3,+=,a+=3 a=a+3,-=,a-=3 a=a-3,*=,a*=3 a=a*3,/=,a/=3 a=a/3,%=,a%=3 a=a%3,14,级 右结合性,复合赋值运算符,变量赋值原理,举例说明:,int a=0,b=0,c=0;,a=7;,b=a;,c=a+b;,a=a+1;,变量的赋值过程图示,0,0,0,0,0,0,7,7,7,7,7,7,8,14,14,a,的存储单元,b,的存储单元,c,的存储单元,定义并初始化,执行,a=7,执行,b=a,执行,c=a+b,执行,a=a+1,1,+,+,对变量赋值应注意,在变量定义时就赋初值是好的编程习惯;,对变量的赋值过程是“覆盖”过程,即用新值去替换旧值;,读变量的值,相当于从该空间中复制出一份同样的拷贝,该变量仍保持不变,。,赋值过程时的注意事项,将一个,short,型数据赋予一个,char,型变量,会发生截断,字符型数据赋予整型变量,是将字符的,ASCII,码值赋予整型变量,赋值表达式,构成:将一个变量和一个表达式用赋值号连接起来的式子称为赋值表达式。,2.,特点:“,=”,是赋值运算符,,14,级,右结合性。,故可写成:,a=b=c=d,;(其他语言不可如此表示,即使在,C+,语言中,在变量初始化时也不可以如此表示。),注意:赋值表达式与赋值语句的区别,a=b,是赋值表达式,a=b;,是赋值语句,整型变量,a,的初值等于,12,,通过下列表达式的运算,,a,的终值是多少?,a+=a-=a*a;,复合赋值运算符属,14,级,具有右结合性;乘法运算符属,3,级,故该题的实际运算步骤为:,a+=(a-=(a*a),即先算:,a=a-(12*12),,,a=12,144,=-132,再算:,a=a+(-132)=-132+(-132),,,整型变量,a,的终值为:,-264,上题变量,a,的值在存储单元中的变化情况示意如下:,a,-132,a,12,-132,-264,12,a,-264,a,变量赋值遵守,“以新冲旧”的原则,自增,1,和自,减,1,运算符,自增,1,运算符,:+,自减,1,运算符,:,-,使用方式,:,变量,+,,变量,-,;(后置),优先级:,2,级,结合性:右,i+:,先使用,i,的原值,在使用,i,之后,使,i,的值加,1,,即,i=i+1;,如果,i,的原值为,3,,则执行,j=i+,之后,,j,的值仍为,3,,然后,i,的值变为,4,;,i-:,先使用,i,的原值,在使用,i,之后,使,i,的值减,1,,即,i=i-1;,如果,i,的原值为,3,,则执行,j=i-,之后,,j,的值仍为,3,,然后,i,的值变为,2,;,使用增,1,和减,1,运算符的注意事项,增,1,运算符和减,1,运算符只能用于变量,不能用于常量和表达式;如:,5+,和(,a+b,),+,均为非法;,5,是常量,常量的值不能改变;,假如,(a+b),的值为,5,,执行,(a+b)+,后的,6,放到哪个存储单元去呢?,使用增,1,和减,1,运算符的注意事项,2.,要十分注意增,1,和减,1,运算符是右结合性的,当出现同级运算时应选取从右到左的方向进行运算;,运算符结合性的应用,int m,i=3,;,m=-i+,;,求负运算符和增,1,运算符同为,2,级,属右结合性,上式等效于:,m=-(i+),属后置,即,:,m=-i,;,i=i+1,;,因此,结果应是:,m=-3,;,i=4,;,m,的值先等于,i,的原值,3,,再进行求负运算最后等于,-3,任务,2-2,编程输出一个由键盘输入的,100,以内,的正整数,x,的值。(,超过,此范围要求给,出提示,),从数学知识来说,,x,应满足:,x0,与,x100,要同时成立;,此题涉及到了,关系运算,逻辑运算,要选出这个数并将其输出,还涉及到,条件运算,100,以内的正整数,x,的范围,:,x,0,与,x100,关系运算和逻辑运算,C+,的关系运算符,(,小于,),(,大于,),=(,大于或等于,),=(,等于,),!=(,不等于,),6,级,7,级,关系运算符完成对两个操作数大小的比较,结果为逻辑值,true,(,真,),或,false,(假),。每种,可比较大小,的数据类型,都要用上关系运算符。,在,C+,中这两个逻辑值与整数之间有一个对应关系,真对应,1,,假对应,0,;反过来,,0,对应假,非,0,整数对应真。,所以关系运算结果可以作为整数参与算术运算、关系运算、逻辑运算及其他运算。,关系表达式,例如:,abc,/*,等同于,(ab)c,,先求,ab,的值,,再将结果,0,或,1,与,c,比较大小*,/,a+bc+d,/*,等同于,(a+b)(c+d),,结果为,0,或,1*/,y=ab,/*,计算,ab,的值,0,或,1,赋给,y,,,y,的值为,0,或,1*/,由关系运算符连接的表达式,其值为,true,或,false,。,已知,a=3,b=2,c=1,则:,关系表达式,a b c,的值为“”,表达式的值为,:,0,;,(,ab,),=c,的值为“”,表达式的值为,:,1,;,赋值表达式,f=a b c f,的值为,:,;,f=a (b c)f,的值为,:,;,真,0,1,假,C+,逻辑运算符,&,逻辑与,11,级,|,逻辑或,12,级,!,逻辑非,2,级,记忆方法,“逻辑与”相当于“逻辑乘”,a,b,a&b,0,0,0,1,0,0,0,1,0,1,1,1,“逻辑或”相当于“逻辑加”,a,b,a|b,0,0,0,1,0,1,0,1,1,1,1,1,优,先,级,运,算,符,名 称,语 义,2,!,逻辑非,(,单目,),操作数的值为真,则结果为假,;,11,&,逻辑与,(,双目,),当两个操作数全为真时,结果为真,否则为假,;,12,|,逻辑或,(,双目,),两个操作数中有一个为真,则结果为真,;,逻辑运算符,逻辑运算符用来进行逻辑运算,其操作数和运算结果均为,逻辑量,。运算结果同样可以作为一个,整数,参与其他运算。,由于,逻辑值,和,整数,之间的,对应关系,,也允许,整型,和,字符型,操作数进行,逻辑运算,。此时将它们视作非零数:,21&0,/,逻辑与,,,21,与,0,,,结果为假,:,0,21|0,/,逻辑或,,,21,或,0,,,结果为真,:,1,!21,/,逻辑非,,,21,的非,,,结果为假,:,0,条件运算符,表达式,1,?,表达式,2,:,表达式,3,例如,:,max=(ab?a:b),条件运算和条件表达式,条件运算符(,?,:,),(优先级为,13,级,结合性为右结合性),要求有,3,个操作对象,称三目,(,元,),运算符,它是,C+,运算符中唯一,的一个,“三目”,运算符。条件表达式的一般形式为:,表达式,1,?,表达式,2,:,表达式,3,条件运算符的执行顺序是,:,先求解表达式,1,,,若为,非,0,(真),则,求解表达式,2,,,此时,表达式,2,的值,就作为,整个条件表达式的值。,若表达式,1,的值,为,0,(假),,则,求解表达式,3,,,表达式,3,的值,就是,整个条件表达式的值。,max=(ab)?a:b;,具体是这样执行的:,如果(,ab,)条件为真,则条件表达式的值就取“,?”,后面的值,即条件表达式的值为,a,,把,a,的值赋给,max,;,否则条件表达式的值为“,:”,后面的值,即条件表达式的值为,b,,把,b,的值赋给,max,。,完成任务,2-2:,#include,void main(),int x;,coutx;,x=0?coutx:cout“,该数不在此范围”,;,coutendl;,任务,2,-,3,编写程序实现逻辑位运算,。,位运算,在计算机用于检测和控制领域中,常常要处理二进制位的问题,对于操作数以二进制位(,bit,)为单位进行的数据处理称为位运算。,位运算包括逻辑位运算和移位位运算两类,参加位运算的操作数必须是整型的常量或变量。,逻辑位运算符,功能,运算符,优先级 举例,位反,2 a,位与,&8,a&b,位异或,9,ab,位或,|10,a|b,逻辑位运算的功能,a b a a&b a|b ab,0 0 1 0 0 0,0 1 1 0 1 1,1 0 0 0 1 1,1 1 0 1 1 0,其中,异或运算的功能是:,“,若异则进行或运算,”,,即当参与运算的两个数不同(一真一假)时,结果为真,否则为假。,任务,2-4,编程描述左、右移位运算。,移位运算符,功能 运算符 优先级 举例 等价于,左移,5,a,5,a2 a,右移,2,位,左移运算,当进行左移运算时,右端出现的空位补,0,,,而左端移出的数据舍去,;,已知,:,c=44=(00101100),;,c=c2=(00111100)=60,右移,n,位相当于原数除以,2,;,2,2,n,b=-16=(10010000),b2=(10000100)=-4,2,2,b =10010000,b =11101111,b =11110000,b =11111100,b =11111011,b =10000100,b2,后,:,原,原,反,反,补,补,带符号操作数右移时,左端出现的空位按原高位复制;,无论什么操作数,右端移出的数均舍去。,移位运算的优先级低于算术运算,但比乘除运算速度快。,#include,void main(),int a,b,c;,a=240;,b=-16;,c=44;,cout2)endl;,cout2)endl;,cout“,左移二位,c=”(c2),成员选择,(),函数参数域,2,+-,自增 自减,右 左,单目,&,取地址,*,取内容,!,逻辑反,(,非,),按位反,+-,取正 取负,(),强制类型转换,size of,求字节数,*,指针定义,常用运算符的功能、优先级和结合性,优先级,运算符,功能说明,结合性,记忆方法,3,*,/%,乘法 除法 求余,左 右,双目,算,术,4,+-,加法 减法,5,左移位 右移位,移位,6,=,小于 不大于 大于 不小于,关,系,7,=!=,相等 不相等,8,&,按位与,位逻辑,9,按位异或,10,|,按位或,11,&,逻辑与,逻,辑,12,|,逻辑或,13,?:,条件运算符,右 左,三目,14,=+=-=*=/=%=&=|=,=,赋值运算符,赋值,15,逗号运算符,左 右,逗号,任务,2-6,#include,void main(),char c1=a,c2=b,c3=c,c4=101,c5=116;,cout“12345678901234567890”endl;,cout“a”c1“b”c2“,t,c”c3“,t,abc”endl;,cout“,t,”,c4“”c5endl;,分析以下程序的输出结果,:,常 量,常量是一种在程序运行过程中保持固定类型和固定数值的数据。,常量,字面常量,字符常量,字符串常量,数值型常量,符号常量,整型常量,实型常量,常 量 的 分 类,整型常量,十进制,(,Dec,),56,=,56,八进制,(,Oct,),021,=,17,十六进制,(,Hex,),0X1F,=,31,前导符,整型常量隐含按有符号整型处理;,256L,(长整型)、,256U,(无符号整型)、,30LU,(无符号长整型),后缀,字符常量,由一对单引号括起来的一个字符,如:,a,、,2,、,#,等;,注意:,B,是字符常量,,B,是标识符;,3,表示一个字符,,3,表示一个整数,特殊:转义字符,转变含义的字符。,常用的转义字符,n 换行,将光标从当前位置移到下一行开头,t 水平制表(将光标跳到下一个制表位),0 空字符(用于作串结束符),ddd 1,3位八进制数所代表的字符,#include,void main(),char c1=a,c2=b,c3=c,c4=101,c5=116;,cout“12345678901234567890”endl;,cout“a”c1“b”c2“,t,c”c3“,t,abc”endl;,cout“,t,”,c4“”c5endl;,12345678901234567890,a,a,b,b,c,c,abc,A,N,字符串常量,由一对双引号括起来的一个字符系列串,如:,“,123”,注意:,“,a”,是字符串常量,占二个字节,相当于,a,和,0;,a,是一个字符常量,占一个字节;,
展开阅读全文

开通  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 

客服