class Test{
  public static void main(String[] args){
    int i = 0; 
    int j = i++ + ++i; 
    int k = --i + i--; 
    System.out.println("i="+i+"  j="+j+"  k="+k);
}
}代码执行后i、j、k分别等于多少呢?
它们是怎样运算的,请说出详细运算步骤

解决方案 »

  1.   

    都是i=i+1的意思,区别在于i++是i先不自加,在语句完后自加,++i先自加;列如a=1+i++;i本来为1的话,这里a=1+1;语句完后i才加1为2;
    a=1+++i的话就先i=i+1;i=2.然后a=i+1,a=3
      

  2.   

    看三楼的解释!很容易理解的。++i.++在前,就是先将i的值+1再参与运算。i++。是先将i的值参与运算得到的结果后再加上1!
      

  3.   

      java基于C,因此一些C的东西被继承下来了,自增自减的运算规则也是如此
      (1) int i = 0;  
      (2)int j = i++ + ++i;
         先i++,结果是产生一份i的拷贝做为下一步运算的值,然后i加1,假设拷贝为i_copy1,那么i++以后i_copy1的值为0,i值为1.
         再++i,结果是先i加1,再产生i的一份拷贝做为下一步运算的值,假设拷贝为i_copy2,那么++i以后i_copy2的值为2,i值为2.
         最后"+"运算符的作用是i_copy1 + i_copy2,根据上面推论结果为2,因此j=2
      (3)int k = --i + i--;  
         同上,推出k=2
      

  4.   

    int j = i++(运算时i = 0,然后自增为1) + ++i()(自增为2,运算时为2);//j = 0 + 2 = 2
    int k = --i()(自减为1,运算时为1) + i--(运算时i = 1,然后自减为0);//k = 1 + 1 = 2
    最后i = 0
    结果 i = 0,j = 2,k = 2 
      

  5.   

    结果是:i=0 j=2 k=2
    运算步骤:
       i=0;
       j=(i++)+(++i) 分步计算为:i++ =0 而i=1;++i=1+1=2  而i=2;所以j=0+2=2,此时i=2;
       k =(--i)+(i--) 分不计算为:--i=2-1=1 而i=2-1=1;i--=1 而i=1-1=0;所以k=1+1=2,此时i=0;