不太理解这个++i i--的过程

问题遇到的现象和发生背景

输出不理解

用代码块功能插入代码,请勿粘贴截图
#include <iostream>
using namespace std;


int main()
{
    int a[5] = { 0,1,2,3,4 };
    int i = 1;
    cout <<i++ <<endl<<i++<< endl << i << endl <<-- i <<endl<<--i << endl;
    return 0;
}
运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

这个源码的运行结果应该是1 2 3 2 1吧,++i 就是先自加再调用,i++ 就是先调用再自加 ,-- 也是一样的

两个知识点

  1. 编译器处理运算是从右向左的,本质是将运算式子存入栈中,然后自栈顶一个个的取出,这个操作中,先入后出
  2. ++--的优先级大于>>
    然后就有
    初值 i = 1
    首先处理--i,--是在操作之前对值进行更改,即在进行cout语句实现前,会进行--的操作
    操作 进入 操作后 i的值变为

--i 1 0 0
--i 0 -1 -1
此时指令应该变成了
cout << i++ << i++ << i << i << i;
且此时i的值变成了-1
此时进行指令的执行,你问为什么不处理++了? ++在i后面啊,只有i被使用了后才会加啊
那么cout第一个输出的是第一个i++,也就是打印i,然后再将i的值自增1
操作 进入 操作后 i的值变为 打印输出
i++ -1 0 0 -1
i++ 0 1 1 0
然后打印三次i
操作 进入 操作后 i的值变为 打印输出
i++ 1 1 1 1
i++ 1 1 1 1
综上,打印为 -1 0 1 1 1