C++中的+++i

发布时间 2024-01-06 19:58:37作者: 自由小菜园

+++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++)操作,这样对结果是有影响的