1、自增、自减运算符自增1运算符记为“+”,其功能是使变量的值自增1;自减1运算符记为“-”,其功能是使变量值自减1。自增1,自减1运算符均为单目运算,都具有右结合性。可有以下几种形式: +i:i自增1后再参与其它运算。 -i:i自减1后再参与其它运算。 i+:i参与运算后,i的值再自增1。 i-:i参与运算后,i的值再自减1。在理解和使用上容易出错的是i+和i-。 特别是当它们出在较复杂的表达式或语句中时,常常难于弄清,因此应仔细分析。【例3-16】1. #include2. int main(void)3. int i=8;4. printf(%dn,+i);5. printf(%dn,-i)
2、;6. printf(%dn,i+);7. printf(%dn,i-);8. printf(%dn,-i+);9. printf(%dn,-i-);10. return 0;11. i的初值为8,第4行i加1后输出故为9;第5行减1后输出故为8;第6行输出i为8之后再加1(为9);第7行输出i为9之后再减1(为8) ;第8行输出-8之后再加1(为9),第9行输出-9之后再减1(为8)。【例3-17】1. #include2. int main(void)3. int i=5,j=5,p,q;4. p=(i+)+(i+)+(i+);5. q=(+j)+(+j)+(+j);6. printf(p
3、=%d,q=%d,i=%d,j=%d,p,q,i,j);7. return 0;8. 这个程序中,对P=(i+)+(i+)+(i+)应理解为三个i相加,故P值为15。然后i再自增1三次相当于加3故i的最后值为8。而对于q 的值则不然,q=(+j)+(+j)+(+j)应理解为j先自增1,再参与运算,由于j自增1三次后值为8,三个8相加的和为24,j 的最后值仍为8。注意:经过读者反馈,我们意识到上面的解释是错误的,笔者亲测,在VC6.0和MinGW下的输出结果是: p=15, q=22, i=8, j=8对于 p=(i+)+(i+)+(i+),先计算 (i+)+(i+),因为是“后自加”,等价于 5+5,结果为10;然后计算 10+(i+),等价于 10+5,结果为 15。对于 q=(+j)+(+j)+(+j),先计算 (+j)+(+j),因为是“前自加”,要先计算两次 +j,此时 j=7,然后相加,相当于 7+7,结果为14;然后计算 14+(+j),相当于 14+8,结果为22。