对于下述的这样一道题,是不是让很多人头疼欲裂呢
对于上面的问题,当然编译器立刻立就可以搞定。得出以下的结果13.
讲解细节前大家需要知道的是:
i++是先将i的值进栈,然后在自增,完了之后再将自增后的值存储在数值型的变量空间i中。
i--是先将i的值进栈,然后在自减,完了之后再将自减后的值存储在数值型的变量空间i中。
++i是先自减,然后将自减后的值进栈,完了之后再将自减后的值存储在数值型的变量空间i中。
--i是先先自减,然后将自减后的值进栈,完了之后再将自减后的值存储在数值型的变量空间i中。
具体执行细节如下:
int a = 2; int b = 3; int c = 4; int num = a++ + --b - --a + --c + ++c + c++;
先从常量池中找到2然后复制一份放入变量空间int类型的变量空间a中。
然后从常量池中找到3然后复制一份放入变量空间int类型的变量空间b中。
然从常量池中找到4然后复制一份放入变量空间int类型的变量空间c中。
a++是先将c的值进栈(进入的值是2),然后在自增,完了之后再将自增后的值存储在数值型的变量空间a中。
然后+号进栈
然后--b是先自减将自减后的值存储在数值型的变量空间b中,然后将b空间的值进栈(进入的值是2)。
然后-号进栈
然后--a是先自减将自减后的值存储在数值型的变量空间a中,然后将b空间的值进栈(进入的值是2)。
+号进栈
然后--c是先自减将自减后的值存储在数值型的变量空间c中,然后将c空间的值进栈(进入的值是3)。
+号进栈
然后++c是先自增将自增后的值存储在数值型的变量空间c中,然后将c空间的值进栈(进入的值是4)。
+号栈
c++是先将c的值进栈(进入的值是4),然后在自增,完了之后再将自增后的值存储在数值型的变量空间c中。
现在栈中由栈底到栈顶存在的元素是2+2-2+3+4+4然后采用某种算法计算得出结果13然后将13存入int型变量num中。