public class test{
public static void main(String[]args){
int i1=10,i2=20;
int i=(i2++);//先把i2的值取出来。该怎么运算就怎么运算。然后i2本身在自增;
System.out.println("i="+i);//还没运算所以结果是i2本身的值/i=20;
System.out.println("i2"+i2);//i2=20不变;
i=(++i2);
System.out.println("i="+i);//i2现在等于20。i等于先增加1。i2现在的结果是(21)赋i .所以现在i=21;
System.out.println("i2="+i2);//i2=20
i=(--i1);
System.out.println("i="+i);//(--)(++)在前面的,先运算后取值。i=10
System.out.println("i1="+i1);//i1=10
i=(i1--);
System.out.println("i="+i);//i=9
System.out.println("i1="+i1);//i1=10


}
}

解决方案 »

  1.   

    int i=(i2++);这一步之后,i2的值已经是21了,所以后面都跟着错
      

  2.   

    public class test{
    public static void main(String[]args){
    int i1=10,i2=20;
    int i=(i2++);//先把i2的值取出来。该怎么运算就怎么运算。然后i2本身在自增    yes
    System.out.println("i="+i);//还没运算所以结果是i2本身的值/i=20        yes
    System.out.println("i2"+i2);//i2=20不变;                         no   i2再 int i=(i2++);此语句执行完后已自加,此处i2=21
    i=(++i2);
    System.out.println("i="+i);//i2现在等于20。i等于先增加1。i2现在的结果是(21)赋i .所以现在i=21;   no  上面i2=21 ++i2则i2=22,不能认为i等于先增加1,而是i2先增加1,再赋值给i
    System.out.println("i2="+i2);//i2=20  no i2=22
    i=(--i1);
    System.out.println("i="+i);//(--)(++)在前面的,先运算后取值。i=10  no 你正好说反了 i=9
    System.out.println("i1="+i1);//i1=10         no i1=9
    i=(i1--);
    System.out.println("i="+i);//i=9   yes  上面i1=9此处先赋值再自减
    System.out.println("i1="+i1);//i1=10 no  i1已自减,i1=8
    }
    }++(or --)在前表示先自加(减)再运算,在后反之
      

  3.   

    i=20
    i2=21
    i=22
    i2=22
    i=9
    i1=9
    i=9
    i1=8
    这个题说的是X++和++X的区别:
    X++是X运算后再加一;++X是X加一后再运算。
      

  4.   

    你说的;不够详细 int i(i2++) 为什么现在就是21?是不是括号里就是在运算了?根据原则:(--)(++)在前面的,先运算后取值。(++)(--)在后面的要先取值后运算;如果现在取值的话就是这样 int i=(21)  所以第2个int i就等于21!是这样吗
      

  5.   

    System.out.println("i2"+i2);//i2=20不变; 这里就错了,i2=21了
    前面已经进行了 i2 ++ 了  //int i=(i2++);System.out.println("i="+i);   //20
    System.out.println("i2"+i2);  //21
      

  6.   

    i2=20;
    i2++; //在这里i2的值已经是21了,但i2++这个式子的值还是20
    j2=20;
    ++j2;//在这里j2的值和++j2这个式子的值都是21