欢迎来到天天文库
浏览记录
ID:22631313
大小:66.00 KB
页数:8页
时间:2018-10-30
《c语言中多个自增自减的运算规律》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、C语言中多个自增自减的运算规律 摘要:C语言允许在一个表达式中使用一个以上的自增运算符、自减运算符,这种灵活性使程序简洁,但同时也会引起副作用。这种副作用主要表现在:使程序费解,并易于发生误解或错误。例如,当i=3时,表达式(i++)+(i++)+(i++)的值为多少,各种教材说法不统一或者干脆回避这类问题。为了弄清楚C语言中多个自增或自减运算符的运算规律,笔者经查阅大量资料并反复上机验证,总结出在VC++6.0环境下多个自增自减的运算规律。 关键词:自增;自减;运算规律 中图分类号:TP311 C语言中有两个很奇特的单目
2、运算符:++(自增运算符)和--(自减运算符),自增运算符和自减运算符都有前缀式和后缀式。这两个运算符在C语句中,尤其是循环语句中使用较为广泛,对于单个的自增运算符或自减运算符,相信大家都易于理解。但是,C语言允许在一个表达式中使用一个以上的自增运算符、自减运算符,这种灵活性使程序简洁,但同时也会引起副作用。这种副作用主要表现在:使程序费解,并易于发生误解或错误。例如,当i=3时,表达式(i++)+(i++)+(i++)的值为多少,各种教材说法不统一或者干脆回避这类问题。既然前面提到在一个表达式中可以有多个自增或自减运算符,我们不
3、能总是以费解或避免出错为由来回避这个问题,不用归不用,了解一下这些内容还是相当有必要的。为了弄清楚C语言中多个自增或自减运算符的运算规律,笔者经查阅大量资料并反复上机验证,总结出在VC++6.0环境下多个自增自减的运算规律。 1连续多个后缀的运算规律 先统一取值后依次自增或自减。如: #include voidmain() { inta,i=5; a=(i++)+(i++)+(i++); printf(a=%d,i=%d\n,a,i); } 其运算规律是先对所有的i++统一取值5,然后i依次自增3次,即a=5+
4、5+5=15,i=5+1+1+1=8。 因此,程序输出结果为:a=15,i=8 2连续多个前缀的运算规律 前两个连续的前缀(两个连续自增,或者两个连续自减,或者一个自增一个自减),即依次自增(减)后,统一取第二个自增(减)的值,后面的每个自增(减)后即刻取值。如: #include voidmain() { inta,i=5; a=(++i)+(++i)+(++i); printf(a=%d,i=%d\n,a,i); } 第一个++i的值为6,第二个++i的值为7,第三个++i的值为8,但第一个++i和第二个
5、++i统一取第二个++i的值7,即a=7+7+8=22,而i的值则依次自增,即i=5+1+1+1=8。 因此,程序输出结果为:a=22,i=8 同理,我们再看一个稍复杂的例子: #include voidmain() { inta,i=5; a=(--i)+(++i)+(++i)+(--i); printf(a=%d,i=%d\n,a,i); } 其运算过程为:a=5+5+6+5=21,i=5-1+1+1-1=5。 因此,程序输出结果为:a=21,i=5 当然,多个自增自减之间的其它算术运算也适用此规律。如
6、: #include voidmain() { inta,i=5; a=(++i)*(--i); printf(a=%d,i=%d\n,a,i); } 其运算过程为:a=5*5=25,i=5+1-1=5。因此,程序输出结果为:a=25,i=5 3前后缀混合的情况 3.1一般情况:表达式中自左向右计算,函数参数列表中自右向左运算。前缀自增(减)后取值;后缀(或变量)取值依其所处位置而定,有连续多个将统一取值,其自增(减)在语句结束前进行。如: #include voidmain() { inta,i=5;
7、 a=(++i)+(++i)+(i++)+(i++)+(++i); printf(a=%d,i=%d\n,a,i); } 其运算过程为:a=7+7+7+7+8=36,i=5+1+1+1+1+1=10。因此,程序输出结果为:a=36,i=10 3.2前后缀各有一个的情况:如: #include voidmain() { inta,i=5; a=(i++)*(++i); printf(a=%d,i=%d\n,a,i); } 由于(i++)*(++i)应满足交换率与(++i)*(i++)相同,规定按后者计算,即
8、先计算前缀再计算后缀,故a=6*6=36,i=5+1+1=7。因此,程序输出结果为:a=36,i=7 当自增(减)出现在函数表达式的参数列表中,它的计算方法与作为普通语句的运算结果是完全不同的。因此如果函数有多个参数,则参数自右向左计算,如:
此文档下载收益归作者所有