全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言自增自減问题总结在程序设计中,经常遇到“i=i+1”和“i=i-1”这两种极为常用的操作。C语言为这种操作提供了两个更为简洁的运算符,即+和-,分别叫做自增运算符和自减运算符。它们是单目运算符,是从右向左结合的算术运算符。学习和应用这两个运算符时应注意以下几点:我将自增自减运算符和变量结合在一下的表达式称为自增自减表达式,如x+,-I等。通常情况下就有以下的结论:1前缀表达式:+x, -x; 其中x表示变量名,先完成变量的自增自减1运算,再用x的值作为表达式的值;即“先变后用”,也就是变量的值先变,再用变量的值参与运算。2、后缀表达式:x+, x-; 先用x的当前值作为表达式的值,再进行自增自减1运算。即“先用后变”,也就是先用变量的值参与运算,变量的值再进行自增自减变化,。如a=8; b=a+; c=+a;其中赋给变量b的值为表达式(a+)的值,不应该理解为a的值,则b=8, c=10;3、自增、自减运算只能用于单个变量,只要是标准类型的变量,不管是整型、实型,还是字符型变量等,但不能用于表达式或常量。如:+(a+b), 与5+, const int N=0; N+; 等都是错误的。 而i+j+、+i+(+j)、+a+b+、+array-j;等,这些都是合法的。4、再说结合性与结合方向编译器对程序编译时,从左到右尽可能多地将字符组合成一个运算符或标识符,因此i+j+等效于(i+)+(j+),两个“+”作用的对象都是变量,这是合法的;而+i+j等效于+(i+)+j,第1个“+”作用的对象是表达式“i+”,这是不允许的。自增自减运算符是单目运算符,其结合性是从右到左。表达式k=-i+等效于k=(-i)+还是k=-(i+)?。因为负号也是单目运算符,因此,上式从右到左结合,等效于k=-(i+);若i=5,则表达式k=-i+运算之后k的值为-5,i的值为6。此赋值表达式的值即为所赋的值-5。不要因为k=-i+等效于k=-(i+)就先做“+”运算!这里采用的是“先用后变”,即先拿出i的值做负号“-”运算,把这个值赋给变量k之后变量i才自增。5、注意运算符的副作用C语言允许在一个表达式中使用一个以上的赋值类运算,包括赋值运算符、自增运算符、自减运算符等。这种灵活性使程序简洁,但同时也会引起副作用。这种副作用主要表现在:使程序费解,并易于发生误解或错误。例如,当i=3时,表达式(i+)+(i+)+(i+)的值为多少,各种教材说法不统一。对于这种情况,为了增强程序的可读性与可移植性,在一个表达式中,就应该用简单的自增与自减运算,不用对同一变量进行多次自增自减运算的表达式,否则,其他人可能看不懂,换个运行环境也可能是不同的结果。我相信,在考试试题中也是不会出现象这种有不同结果的试题的,请读者放心。当然,为了丰富知识,了解一下这些内容也是必要的。以下内容是经查阅资料所得:用各种表达式上机测试,给出VC+环境下连续自增(自减)运算规则:1、 在一般表达式中和在函数参数中计算的结果相同(这一点与Turbo C环境不同);2、 后缀:同表达式中Turbo C的情况相同:先统一取值后依次自增,如:int a,i=5; a=i+i+i+; a=15, i=8.3、 前缀:前两个自增同Turbo C,即依次自增后统一取值,后面的每个自增后即取值,如:int a, i=5; a= +i +(+i)+(+i); a=22, i=8.4、 前后缀混合的情况:(1) 一般情况:表达式中自左向右计算,参数自右向左运算。前缀自增后取值;后缀(或变量)取值依其所处位置而定,有连续多个将统一取值,其自增在语句结束前进行。(2) 前后缀各有一个的情况:设int i=5; 由于i+*+i应满足交换率与+i*i+相同,规定按后者计算故为36。实验2内容4:int i=5; printf(%d,%dn, -i, i+*+i ); 打印5,36。(3) 若i+或+i或两者有多于一个的情况:+i有两个以上在一起时最左边的连续自增同3、,其余每个自增后取值,如:int i=5;printf(%dn%dn,-i,(+i)+(i+)+(i+)+(+i); 打印6和25printf(%dn%dn,-i,(+i)+(+i)+(+i)+(+i)+(i+); 打印8和40printf(%dn%dn,-i,(+i)+(+i)+(+i)+i+(+i)+(+ i); 打印9和49(4) 函数参数中有括号时,括号参数优先计算,其余参数仍自右向左计算,如:int i=9,j=8; printf(%d %dn, (+i, j-), +i); 打印8 11printf(%d %d %dn, (+i, j-), +i, i); 打印8 11 10(5) 最后i的值等于原值加总自增次数减自减的次数.克服这类副作用的方法是,尽量把程序写得易懂一些,即将费解处分解成若干个语句。如:k=i+j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 解析卷人教版八年级物理上册第5章透镜及其应用-生活中的透镜定向攻克试卷(含答案详解)
- 解析卷-人教版八年级上册物理物态变化《汽化和液化》专项练习试题(解析卷)
- 2025年高二生物下学期无性生殖类型题
- 常州市金坛区择优比选公务员考试真题2024
- 考点攻克人教版八年级上册物理光现象《光的直线传播》同步练习试题(详解)
- 难点详解人教版八年级物理上册第5章透镜及其应用难点解析试卷(含答案详解版)
- 综合解析人教版八年级上册物理《长度和时间的测量》定向攻克练习题(含答案解析)
- 重难点解析人教版八年级物理上册第5章透镜及其应用专题测试试题(解析卷)
- 2024年浙江台州职业技术学院招聘真题
- 强化训练苏科版八年级物理上册《光现象》专项练习试题(含答案解析)
- 2025年中国水处理用絮凝剂和凝聚剂行业市场分析及投资价值评估前景预测报告
- 2025年内蒙古公职人员考试时事政治考试试题(附含答案)
- 公安机房运维知识培训课件
- 《基层常见病诊疗指南》
- 2025年及未来5年中国专用灯具行业市场调研及投资战略研究报告
- 2025年新版中国移动笔试题库及答案
- 2025年湖北省生态环保有限公司招聘33人笔试参考题库附带答案详解
- 集装箱驾驶员管理制度
- 第八章健美操健美操组合动作教学设计人教版初中体育与健康八年级全一册
- 4.11五四运动课件-统编版八年级历史上册
- 肿瘤患者中心静脉血管通路装置相关皮肤损伤临床护理实践指南 2
评论
0/150
提交评论