++的问题是老问题了,关键就是前++是运算前后++是运算后,比如return ++i;返回的是i+1,而return i++;返回的是i,所以步骤如下:
++3+3++
4+4++
return 8++;
++i+i++这个问题主要是弄懂++i与i++的区别以及该表达式的运算顺序。现将表达式改写为:(++i)+(i++).
对于++i,该式是指先将i的值自加1,然后再取i的值。所以,该表达式的值为4,i的值也为4;对于i++,该表达式是指先取i的值做运算,再将i加1。因此,该表达式的值为4,而i的值却为3。
所以,(++i)+(i++) = 4+4 =8. 请注意,尽管这两个式子的值都为4,但i的值是不同的。
这种计算结果依赖于编译器实现,一个小总结[cpp] 前置后置操作符总结
直观看的话有两个规律:
1) 在计算中,对于一个作用域内的前缀操作数(++i),替换为i的最终数值,对于后缀操作符替换为原数值。
2) 在依靠堆栈工作的方法中,对于一个作用域内的前缀操作符(++i),替换为i的最终数值,对于后缀操作符,按照入栈顺序分析。
对于++i+i++:
i初始值3.有两个++操作符,按照规则1),将++i替换为i的最终数值为5,对于i++按照规则1)保持原数值3, 最终结果为8.
看来大家都理解得很透彻...