有哪位高手能给小弟我详细解释一上关于i++++与++++i的区别

有谁能给我详细解释一下关于i++++与++++i的区别
c++里面不太懂左值和右值的区别,谁能给我具体解释下,以i++++和++++i为例

------解决方案--------------------
引用:
主要是不太理解c++里面左值和右值的区别,我们老师用这个举了下例子,不太明白

啊,刚才我没说到点儿上。i++++ 应该是编译错误,因为 i++ 的结果为右值,后者不能再次 ++,因为 post ++ 要求操作数为左值。相比之下 ++++i 就没有问题,因为 ++i 的结果为左值,后者能够再次 ++.
------解决方案--------------------
引用:
先假定i是个标识符。如果i是任意表达式那么情况太多了不好说。
词法分析后:
i ++ ++
++ ++ i
语法分析后:
(i ++) ++
++ (++ i)
语义分析:如果没有匹配重载的++,那么就是编译时错误,因为内建++的结果是右值,不能继续作为内建++的操作数。后者若使用内建++,i上的两次++的副作用unsequenced,行为未定义。如果类类型……

好吧一时脑残惯性思维又错了。对于内建++,++++i等价于++(i+=1)即(i+=1)+=1,在C++98/03未定义,因为在sequence points之间修改了同一对象超过两次;但在C++11中求值顺序是确定的,因为每个+=修改左操作数的副作用保证sequenced before于整个+=表达式的值的计算,而每个+=表达式的子表达式计算sequenced before于+=的副作用。如果不考虑INT_MAX之类一次++就溢出导致UB,那么对于内建类型这里相当于i+=2。