


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科学教科版课件
- 天府新区信息职业学院《大数据与智慧物流》2023-2024学年第一学期期末试卷
- 重庆工程学院《物联网技术理论》2023-2024学年第二学期期末试卷
- 山西艺术职业学院《篮球2》2023-2024学年第一学期期末试卷
- 2025商业地产租赁合同模板范本
- 嘉应学院《现代信息技术在教学中的应用》2023-2024学年第二学期期末试卷
- 2025合同法:合同终止条件与续约规定
- 台州油漆厂房施工方案
- 2025至2031年中国多功能面波仪行业投资前景及策略咨询研究报告
- 2025至2030年中国高压径向柱塞泵数据监测研究报告
- 产业经济学第三版(苏东水)课后习题及答案完整版
- 首件检验记录表(标准样版)
- 中建六局建设发展公司责任目标管理考核办法
- 重庆森林工程林业项目营造林检查验收办法(试行)
- 太阳能光伏发电系统PVsyst运用
- 《江南园林分析》ppt课件
- 市政工程施工质量检查表
- 施工日志填写范本
- 土及部分岩石力学参数经验值
- 如何做好银行业IT审计
- 国内外硅钢片牌号
评论
0/150
提交评论