C语言中多个自增自减的运算规律
#include
void main()
{
int i=5;
printf("%d,%d\n", --i, i++*++i );
}
其运算过程为:先计算i++*++i为36,再计算- -i结果为5。因此,程序输出结果为5,36
3.3 有多个前后缀的情况:++i有两个以上在一起时最左边的连续自增同上述规律二、,其余每个自增后取值,如:
#include
void main()
{
int i=5;
printf("%d\n",(++i)+(i++)+(i++)+(++i));
}
计算过程为6+6+6+7=25,因此,程序输出结果为25
再例如:
#include
void main()
{
int i=5;
printf("%d\n",(++i)+(++i)+(++i)+(++i)+(i++));
}
计算过程为7+7+8+9+9=40,因此,程序输出结果为40
再例如:
#include
void main()
{
int i=5;
printf("%d\n",(++i)+(++i)+(++i)+i+(++i)+(++i));
}
计算过程为7+7+8+8+9+10=49,因此,程序输出结果为49
3.4 函数参数中有括号时,括号参数优先计算,其余参数仍自右向左计算,如:
#include
void main()
{
int i=9,j=8;
printf("%d, %d\n", (++i, j--), ++i);
}
其运算过程为先计算(++i,j--),再计算++i,因此,程序输出结果为8,11
再例如:
#include
void main()
{
int i=9,j=8;
printf("%d, %d ,%d\n", (++i, j--), ++i, i);
}
注意其运算过程是先计算括号中的值,然后在++i ,i这两个参数中,自右向左计算,即先计算i,再计算++i ,因此,程序输出结果为8,11,10。
3.5 最后i的值等于原值加总自增次数减总自减的次数。
以上规律是在VC++6.0环境下测试总结出来的,在不同的运行环境下规律可能不一样,需区别对待。当然,此规律只供探究C语言中多个自增、自减的运算规律,在实际编程中还是应该尽量避免或禁止在一个语句中使用多个自增或自减的这种写法。
参考文献:
[1]陈东方,黄远林.C语言程序设计基础[M].北京:清华大学出版社,2010,3.
[2]谭浩强.C程序设计(第4版)[M].北京:清华大学出版社,2010,6.