自加自减运算符在应用中需要注意几点问题.docVIP

自加自减运算符在应用中需要注意几点问题.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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参与计算

文档评论(0)

130****9768 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档