这个问题比较的麻烦,通常考虑这些问题的是需要参加计算机笔试考试的人,因为通常我们在项目中不会使用这种容易混淆的东西.
解决这个问题我们首先需要知道下面的两句话
a++ 先取a的值后运算a的值
++a 先运算a的值后取a的值
如果你记住了上面两个定理我们来看看这两段代码:
上面这段代码的运行结果是1.
而这段代码运行的结果是0.
请记住:
后缀自增是先取值后运算
前缀自增是先运算值后取值
我们再来看下面的代码:
上面这段代码返回b的值仍然是1,因为是先取a的值为0然后进行运算1+0=1,所以结果是1.
那么把代码这样改变一下了
我们都知道括号的优先级是最高的,那么上面这段代码的运行就结果会是2吗?
如果你认为结果是2的话那么请再看看这段话
后缀自增是先取值后运算
前缀自增是先运算值后取值
尽管上面的代码对a++添加了括号,但是它仍然不会违背上面这个原则.下面的这段代码可以很好的帮你理解自增的情况
这个时候b的值等于1,第一个a++时,取a的值为0,自增后a=1,第二个a++的值取a的值等于1,那么这个等式就是b=0+1,所以b的值仍然是1.
运算完后a的值等于2.