C运算符和表达式专题培训课件.ppt
《C运算符和表达式专题培训课件.ppt》由会员分享,可在线阅读,更多相关《C运算符和表达式专题培训课件.ppt(25页珍藏版)》请在咨信网上搜索。
1、C+运算符和表达式运算符和表达式运算符说明示例+、-正负号+、-加,减x=y+z,x=y-z%取余x=y%z*、/乘,除x=y*z,x=y/z+/-自增和自减运算符C+语言中包含了丰富的运算符,主要有算数运算符、关系运算符、逻辑运算符、赋值运算符和位运算符。下面逐一介绍这些常用的运算符。1.1 算数运算符算数运算符算数运算符主要用于算数运算。注意:对于除,若两个操作数都是整数,结果为整数(商部分)。1/2=0 5/2=2%通常称为取模运算,两个操作数必须都是整型数,结果为余数,余数的符号与左边数的符号等同。3%2=1 -3%2=-1 3%-2=1 -3%-2=-1 8%4=0在算在算术运算中需
2、要注意溢出运算中需要注意溢出问题。两个整数做加法、减法或乘法运算两个整数做加法、减法或乘法运算时,即便,即便结果溢出也不是果溢出也不是错误。例如:例如:short s1=32765;s1=s1+3;/结果是否超果是否超过short的最大的最大值?couts1endl;/输出出-32768,而不是,而不是32768。实际上,上,观察二察二进制数据,制数据,这两个两个值是一是一样的的。l+和有前置方式和后置方式。前置方式使操作数增1(或减1),新值参与表达式的运算;后置方式是在操作数参与表达式运算后其值增1(或减1)。例如:+i,-i/在使用i之前,先使i的值加1,减1i+,i-/在使用i之后,使
3、i的值加1,减1l一元负号运算符对运算对象值取值取负后,返回其(提升后的)副本:Int i=1024;Int k=-i;/k是-1024bool b=true;bool b2=-b;b2=?对大多数运算符来说,布尔类型的运算对象将被提升为int型。如上所示,布尔变量b的值为真,参与运算时将被提升成整数值1,对它求负的结果是-1,将-1再转回布尔值并将其作为b2的初始值,显然这个初始值不等于0,转换成布尔值后应该为1,。所以,b2的值是真!(false可以代表0,但true有很多种,并非只有1)1.2 关系运算符关系运算符关系运算符主要用于关系比较运算。关系运算符名称效果a=b等于TRUE,如果
4、a等于ba!=b不等于TRUE,如果a不等于bab大于TRUE,如果a大于ba=b大于等于TRUE,如果a大于或者等于b关系运算的结果是一个表示“真”或“假”的逻辑值,即一个bool值。当关系成立时,其运算结果为真;当关系不成立时,结果为假。但C/C+语言中没有逻辑型,关系运算的结果要用一个int值表示,0即为假,1即为真。l关系运算符的优先级为(括弧中运算符的优先级相同):(、=、b=c;/等价于d=(a b)=c);d的值为0 d=a=b c;/等价于d=(a=(b b b)=c);d的值为1 可以使用()来改变运算符的计算次序。由于浮点数在计算机内进行运算和存储时会产生误差,因此在比较两
5、个浮点数时,建议不要直接比较两数是否相等。例如,执行下面语句:double d1=3.3333,d2=4.4444;if(d1+d2 =7.7777)cout相等endl;elsecout不等endl;coutd1+d22 0,ab+c 0 ,a=2 1,a=a 0,aa 0,b=a=2 1条件语句中用“=”来判断浮点数是否相等,结果是不等,但d1+d2输出结果却是7.7777。两个实型数即便输出结果完全一样,其内部值也可能不一样。判断两个实数是否相等的正确方法是:判断两个实数之差的绝对值是否小于一个给定的允许误差数,如判断d1是否等于d2时,应改为:fabs(d1+d2-7.7777)=1e
6、-6其中,fabs()是计算绝对值的一个库函数,使用时要包含头文件math.h。1.3 逻辑运算符运算符对逻辑值进行运算的运算符就是逻辑运算符。C+语言提供了3个逻辑运算符,用于表示操作数之间的逻辑关系,它们是!(逻辑非)、&(逻辑与)、|(逻辑或)。逻辑运算的结果仍然是逻辑值。逻辑运算符名称效果!a求反TRUE,如果a不为TRUEa&b逻辑与TRUE,如果a与b都为TRUEa|b逻辑或TRUE,如果a或b任一为TRUE逻辑非(!)是单目运算符,它对操作数进行取反运算。当操作数为非0(逻辑真)时,!运算后结果为0(逻辑假)。反之,若操作数为0(逻辑假),!运算后结果为1(逻辑真)逻辑运算符的运
7、算优先级为:!高于&高于|。注意,!的优先级具有较高优先级,甚至高于算术运算符。而&和|的优先级则比算术运算符和关系运算符低。因C+将逻辑值保存为整数值,这样使得逻辑值可参与所有的运算,而且逻辑运算符可作用于所有类型的值,而没有语法错误提示。这是C/C+语法不严密之处。读者应注意避免。1.4 赋值运算符运算符l赋值运算就是将一个表达式的值赋给一个变量。lC+语言提供了两类赋值运算符:基本赋值运算符和复合赋值运算符。l基本赋值运算符为“=”,复合赋值运算符有多种形式:+=、-=、*=、/=、%=、=、&=、=、|=。(1)赋值运算符都是双目运算符,从右向左进行。例如,sum1=sum2=0相当于
8、sum1=(sum2=0),先执行sum2=0,后执行sum1=sum2。(2)要求赋值运算符左操作数必须是左值,左值能存储值。例如:x=3+5/正确,x是左值 x-3=5/语法错误,x-3不是左值(3)复合赋值运算符是将算术运算或位运算与赋值相结合,同一个变量即参加运算,也是被赋值的变量,出现在赋值运算符的两边。复合赋值运算符是一个整体,中间不能用空格隔开。例如:a*=6/相当于a=a*6 a%=6/相当于a=a%6 a+=3+6 /相当于a=a+(3+6)初学者容易犯的一个错误就是混淆“=”运算符和“=”运算符。分析下面代码:int a=5,b=3;int d=a=b;/d的值为0赋值运算
9、符名称效果=赋值x=10+=赋值与和x+=10(等于x=x+10)-=赋值与减x-=10*=赋值与乘x*=10/=赋值与除x/=10&=赋值位与x&=0 x02|=赋值位或x|=0 x02答案是有的,对于a=a+1,表达式a被计算了两次,对于复合运算符a+=1,表达式a仅计算了一次。一般的来说,这种区别对于程序的运行没有多大影响,但是当表达式作为函数的返回值时,函数就被调用了两次,而且如果使用普通的赋值运算符,也会加大程序的开销,使效率降低。la=a+3;与a+=3;有没有区别?1.5 位运算符位运算符u位运算是指对字节内部的二进制位进行移位或逻辑运算。u位运算是通过位运算符来完成的。u位运算
10、的操作数必须是char、short、或int值,而且结果也是char、short或int值。u除了按位求反是单目运算符,其余位运算都是双目运算符。uC+提供了两类位运算:移位运算和按位逻辑运算。1.5.1.移位运算符移位运算符的格式为:operand n 将操作数operand向右移动n个二进制位,保持符号不变。其中,n为整数。注意移位运算并不改变operand本身的值。例如:比如 22;值变成8;对于移位运算,注意以下几点:(1)不要尝试对float或double数据进行移位运算,编译会出错。(2)移动位数n应不大于左操作数的位数,如int移位应不大于32。如果n大于左操作数位数,实际移动位
11、数要自动按字长取模:n%(sizeof(int)。例如,i33就是i左移1位。(3)左移位与cout与cin可能混淆,可用括号消除这些错误,例如cout(k3)1.5.2 位逻辑运算符按位逻辑运算有4个:求反、与&、或|、异或。(1)按位求反“”运算符是一个单目运算符,对操作数逐位取反,得到反码。若二进制位为0,则取反后为1;若二进制位为1,则取反后为0。例如:short int m=0 xc3/结果为0 xff3c运算符具有比较高的优先级,高于一般的算术运算符。而其它按位逻辑运算符的优先级则比较低。(2)按位逻辑与“&”对两个操作数逐位进行运算。若对应位都为1,则该位结果为1,否则为0。例如
12、:0 xc3 0000 0000 1100 0011 0 x6e 0000 0000 0110 1110 0 x42 0000 0000 0100 0010short int a=0 xc3&0 x6e/结果为0 x42(3)按位逻辑或“|”对两个操作数逐位进行运算。若对应位都为0,则该位结果为0,否则为1。例如:short int b=0 x12|0 x3d/结果为0 x3f位运算符名称效果a按位反1,如果a不为1a&b按位与1,如果a与b都为1a|b按位或1,如果a或b都不为1ab按位异或1,如果a和b不相同右移(4)按位逻辑异或“”也是对两个操作数逐位进行运算。异或运算的规则是,若对应位
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运算 表达式 专题 培训 课件
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。