自增: ++i ; i++
i++; 先使用完毕后,即运行到分号”;”结束后,再自加。
++i;先自加,再使用。
对于一个函数,从右边开始传参。
在函数中:++i被替换成变量名, i++被替换成数值。
结束标志:分号”;”。 逗号”,”。括号”()”。
如下面这个例子:
我们可以先定义一个 int i = 2;
i = i * ( ( i++) + (++i) );
printf("i = %d\n",i);
输出结果是: i = 19;
分析: 由左右法则可知, 首先等号右边第一个i = 2 不变, 然后看括号里面的,左括号里面是i ++ ,语句还没结束,所以i 还是2,右边括号里的是++i.这时i = 3了,于是所有的i都要更新成3,于是变形为 i = 3; i = i * ((i++) + 3).
i = 3 * (3 + 3) = 18,注意!!这时程序完了,但是你更新后的i++还没自加,所以还要加1,即为 19.
在看一个函数的例子:同样在主函数main中定义一个 i = 2.
调用一个函数func(i++, ++i, i, i++, ++i); 并输出i的值。
对于一个函数传参,是从右往左,所以先看++i,此时++i在函数中作为变量名。仍以i标记,从右往左,i++遇到结束标志逗号i更新为3,i为3以变量i标记;++i此时为4,以变量i标记,i++中遇到结束标志为5;程序结束,但有两次i++,变量i更新加2。最后结果为(5,6,6,3, 6)。