- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
自加自减运算符在应用中需要注意几点问题
自加自减运算符在应用中需要注意几点问题 摘要:自加、自减运算符是具有副作用的运算符,在实际应用中,单个自加、自减运算符容易理解,但多个自加、自减运算符同时出现在表达式中时,就不容易理解了,而且很容易出错,所以在应用中对一个表达式中的多个自加、自减运算符要特别小心谨慎。 关键词:自加;自减;运算符;变量;表达式 中图分类号:TP312 关于自加、自减运算符,有如下定义和性质: (1)自加、自减运算符是具有副作用的运算符。它的运算结果是使运算对象的值增1或减1。如i++,相当于i=i+1;i--,相当于i=i-1。因此,自加或自减运算本身也是一种赋值运算。 (2)++、--运算符是单目运算符,运算对象可以是整型变量也可以是实型变量,不能是常量和表达式,因为不能给常量和表达式赋值;因此,如++3、(i+j)--等都是不合法的。 (3)自加、自减运算符既可作为前缀运算符,也可作为后缀运算符而构成一个表达式,如++i,--i、i++、i--等都是合法的表达式。但无论是作为前缀还是作为后缀运算符,对于变量本身来说自增1或自减1都具有相同的效果,但作为表达式来说却有着不同的值。如,若变量i为int类型,且已有值为5;则表达式++i,先进行i增1运算,表达式的值为6;--i先进行i减1运算,表达式的值为4;i++表达式的值为5,然后i进行增1运算,使i中的值为6;i--表达式的值为5,然后i进行减1运算,使i中的值为4。 (4)++和―运算符的结合方向是“自右向左”。如表达式-i++,负号运算符和自加运算符优先级相同,结合方向“自右向左”,即相当于对表达式-(i++)进行运算。如果需要输出表达式-i++的值,则应先取出i的值使用,输出-i的值-3,然后使i的值增1为4。 (5)请不要在一个表达式中对同一个变量进行多次诸如i++或++i等运算,如写成: i++*++i+i++*--i,这种表达式不仅可读性差,而且不同的编译系统对这样的表达式将作不同的解释,进行不同的处理,因而所得结果也各不相同。 (6)++和--是具有副作用的运算符,由它们构成的表达式称为具有副作用的表达式。所谓表达式的副作用就是指除了产生一个计算结果外,还要改变参与计算过程的某些变量的值或产生其他的某些效应。 下面通过几个案例来说明自加、自减运算符在具体应用中需注意的几点问题。 案例一: main() {inti=3,b,c; b=i++; c=++i; printf(“%d,%d\n”,b,c); } 分析:语句:b=i++;相当于两条语句: b=i;/*b=3*/(先取变量i的值3赋给变量b) i=i+1;/*i=3+1*/(副作用:改变变量i的值,使变量i由3增1为4) 语句:c=++i;相当于两条语句: i=i+1;/*i=4+1*/(副作用:先改变变量i的值,不要以为这里i=3+1,因为在语句b=i++;中,i的值已改变为4) c=i;/*c=5*/(将改变后的变量i的值5赋给变量c) 所以输出结果为:3,5 案例二: main() {inti=3,b,c; b=(i++)+(i++); c=(++i)+(++i); printf(“%d,%d\n”,b,c); } 分析:语句:b=(i++)+(i++);相当于三条语句: b=i+i;/*b=3+3*/(先取变量i的值3参与计算,并将结果赋给变量b。注意:不要以为:b=3+4,因为(i++)+(i++)是被“同时”取变量i的初值,不能分“先后”。) i=i+1;/*i=3+1*/(副作用:改变变量i的值,使变量i由3增1为4) i=i+1;/*i=4+1*/(副作用:改变变量i的值,使变量i由4增1为5) 语句:c=(++i)+(++i);相当于四条语句: i=i+1;/*i=5+1*/(副作用:先改变变量i的值,使变量i由5增1为6) i=i+1;/*i=6+1*/(副作用:再改变变量i的值,使变量i由6增1为7) c=7+6; c=c+1;/*c=13+1*/(副作用:由于表达式中连续两个(++i)参与运算,导致了新的“惯性”副作用,使变量c的值也产生增1的作用。) 所以输出结果为:6,14 案例三: main() {inti=3,b,c; b=(i++)+(i++)+(i++); c=(++i)+(++i)+(++i); printf(“%d,%d\n”,b,c); } 分析:语句:b=(i++)+(i++)+(i++);相当于四条语句: b=i+i+i;/*b=3+3+3*/(先取变量i的值3参与计算
您可能关注的文档
最近下载
- 养老院门卫管理制度.pdf VIP
- 电力设施保护条例实施细则.pdf VIP
- 统编语文三年级上册第七单元《口语交际:身边的“小事” 》.pptx VIP
- 2024年中央纪委国家监委驻中国邮政集团有限公司招聘笔试参考题库附带答案详解.pdf VIP
- 《大学生创新创业基础》 第六章 市场调查与营销策略.pptx
- 建筑防水工程施工质量监理实施细则hg.doc VIP
- 环境材料概论 课件全套 第1--9章 绪论、吸附材料 ---环境材料的绿色设计.pptx
- 中职英语英语教学计划.docx VIP
- HGT2226-2019普通工业沉淀碳酸钙.pdf VIP
- 3肖仰华-大规模知识图谱构建与应用.pdf VIP
文档评论(0)