a+++++b,应该理解成:(a++) + (++b)。
这涉及到“左值”的问题。转一段“百度百科”里关于左值的说明:
左值(lvalue) 是B语言/C语言/C++语言等类C语言中的一类表达式。“左”(left)的原意是指可以放在赋值符号“=”的左边,但其实也表示能作为&和++等操作符的操作数(B语言中已经如此)。而且,现代C/C++中的含义已经不局限于此。lvalue的l被重新解释为location。这也对应于ISO C11/ISO C++11的内存位置(memory location)。
总结:a存在左值,可以有表达式:a++。但是(a++)不存在左值,无法继续执行(a++)++操作。