+++i在C++中会怎么解释呢?先不管对错纯粹讨论运算方式
按照能找到的最长的运算符开始解释
所以会解释成++(+i)
+++++i+++i++
按照分割 ++ ++ +i++ + i++ 也就是++(++(+(i++)))+(i++) 首先进行i++操作,得到一个右值,该右值进行 +右值 操作 结果还是一个右值 在再进行++右值 报错
++++i+++i++
按照分割 ++ ++i++ + i++ 也就是++(++(i++))+(i++) 首先进行i++,得到一个右值,该右值进行++右值操作,报错
可以改成(++++i)+++i++ 这样的话 会进行 ((++(++i))++)+(i++) 首先进行++i得到一个左值,进行++左值又得到一个左值,再左值++运算得到一个右值 ,
右值+(i++) 右边的i++也是一个右值 ,所以结果就是右值+右值
当然实际不要这样写,因为无法确定运算顺序,所以实际结果各个平台不一致
(++++i)+++j++ 这样是没问题的,因为这个对求值顺序没有要求
何为求值顺序
也就是C语言中没有规定是先进行(++++i)操作 还是先进行最后面的(i++)操作,这样对结果是有影响的