求解自增自减运算符的运算结果

```c++
#include
int main()
{
int i=5;
printf("i++=%d,i++=%d\n",i++,i++);
printf("i=%d\n",i);

}

```有没有人告诉我为什么输出的结果是6,5,7
这个5是为什么

  • printf 里面的参数 ,按顺序从左往右入栈,输出时参数是按从右往左出栈计算,所以先算最右边的参数。
  • 最右边 i++ ,出栈 值为 5 ,i此时为6;然后它左边参数 i++ ,出栈值为 6,i 此时为7;printf输出 6,5; 最后再打印i 为 7

因为最开始i=5;
printf("xxxxxx",A,B) 这个语句是先算B,再算A
tmp=i++是后自增,意思是先把i赋值给tmp,然后i自己再自增,所以此时tmp=原来的i=5,然后再自增i=i+1=6。
显然上面就是算的B,即B=tmp=5,然后i=6
接着算 A=tmp=i++,即先把此时的i即6赋值给tmp即A=6,然后A再自增即i=i+1=7
所以A输出为6,此时i=7。
按流打印出来先打印A,再B,再i,即6,5,7