浅析C语言中自增自减运算.docVIP

  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文档。上传文档
查看更多
浅析C语言中自增自减运算

浅析C语言中自增自减运算   摘 要:C语言应用中,自增自减运算符运用灵活、广泛且具有一定的使用技巧和难度,在编程过程中,往往是初学者最难理解和最容易出错的运算符。本文根据自增自减运算符的特点和两种使用形式,剖析自增自减运算符的功能和在不同编译环境下的运算规则,以便更好地为初学者学习和使用提供帮助。   关键词:C语言;自增运算符;运算规则;自减运算符   中图分类号:TP312.1   C语言中自增自减运算符使用过于灵活多变、不易掌握,在编程时会出现一些令人意料不到的结果。于是对C语言初学者而言正确而又灵活地掌握好自增自减运算符的应用,是非常必要的。   1 自增自减运算符的运算规则   1.1 功能   自增运算符即“++”,其功能使变量的值自增1。   自减运算符即“--”,其功能使变量的值自减1。   1.2 运算对象   自增自减运算符都是单目运算符,只能对单个变量进行操作,而不能操作常量或表达式。自增自减运算符实质是在原来变量的基础上自增(减)1,最后的值还要重新赋给原变量。由于常量和表达式自身没有存储单元,自增(减)后的值无法保存,故都不能做自增自减运算。如:3++、(m+n)--等都是非法的。   1.3 使用形式   使用形式分为前缀形式和后缀形式两种。   前缀形式:运算符在变量前,例如:++i,--i(在使用i之前,先使i的值加(减)1)。   后缀形式:运算符在变量后,例如:i++,i--(在使用i之后,使i的值加(减)1)。   在这两种形式运算中,表达式的值不同:前缀形式运算后,表达式的值为运算变量值加(减)1。   例如:   int m,n=1;   m=++n;(先把变量n的值加1使n=2,再把n的值赋给变量m,m=2,++n表达式的值为2)   printf(“%d,%d”,n,m);输出结果为:2,2。   后缀形式运算后,表达式的值仍为运算变量原值。   例如:   int m,n=1;   m=n++;(先把变量n的值赋给变量m,m=1,再把变量n加1使n=2,n++表达式的值为1)   printf(“%d,%d”,n,m);输出结果为:2,1。   1.4 优先级与结合性   属于单目运算符的自增自减运算符优先级为2级,运算时结合性为“自右至左”。   例如:若要计算j=-i++;的值,则必须先计算出-i++表达式的值然后赋给变量j。那么在运算-i++表达式时,由于自增运算符“++”和负号运算符“-”的类型、优先级和结合方向都相同,所以按照C语言的规定,优先级相同的运算先后次序由结合方向来决定,故表达式执行-(i++)操作。若变量i=1,则运算时先用i的原值1加上负号赋给变量j,j=-1,然后i增值为2,最终结果为:j=-1,i=2。   1.5 自增自减运算符连续多次出现在一个表达式中   C语言的表达式中允许使用一个以上的赋值运算符、自增运算符和自减运算符。这种灵活性使程序简洁,但同时可读性变差且易于发生错误,而且不同的编译系统对这样的程序运行所得结果也各不相同,以下主要以Turbo C和Visual C++ 6.0编译环境为例进行分析。   例如:   main()   {int i,p;   i=3;p=(i++)+(i++)+(i++);printf(“p=%d,i=%d\n”,p,i);   i=3;p=(++i)+(++i)+(++i);printf(“p=%d,i=%d\n”,p,i);   }   分析:在Turbo C和Visual C++ 6.0两种编译环境中表达式p=(i++)+(i++)+(i++)中的自增运算作为后缀式,其运算优先级低于求和运算。故先使用自增运算符中变量i的值参与求和运算,即p=3+3+3=9,然后再对变量i进行3次自增运算,即i++;i++;i++;最后i的值为6。   在Visual C++ 6.0环境下,表达式p=(++i)+(++i)+(++i)中的自增运算作为前缀式,其运算优先级高于求和运算。故先按照“自右至左”的结合性进行两次自增运算即i++;i++;,i的值变为5,获得满足第一个求和运算符两侧的操作数要求进行5+5求和运算,然后将和值(10)与变量i的第三次自增值(i=6)进行第二次求和运算(10+6)即p=((++i)+(++i))+(++i)=(5+5)+6=16,最后i的值为6。   在Turbo C环境下,虽然表达式p=(++i)+(++i)+(++i)中自增运算也作为前缀式,但是其运算优先级高于全部求和运算,故按照“自右至左”的结合性先进行3次自增运算,即i++;i++;i++;,之后i的值变为6,最后再进行加法运算,即p=6+6+6=18。   2 自增自减运算符的应用   2.1 在关系表达式中的应用   当

文档评论(0)

erterye + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档