问大家一个很简单的i++的问题,当int i=3;int a=(i++);System.out.println(i);System.out.println(a);  a的值是3  i的值是4  那么int i=3;int b=(i++)+(i++);System.out.println(i); System.out.println(b); 这里我知道i的值是5 但是我就想不通的是b的值为什么是7,同样int i=3;int c=(i++)+(i++)+(i++);System.out.println(c); System.out.println(i);我也知道这个i的值是怎么算出来的,但是这个C的值是12,那这个12是怎么算出来的呢!还有一个int i=3; int a=(i++); int e=(i++)+(i++)+(i++)+(i++)+(i++);
System.out.println(i);System.out.println(a); System.out.println(e);这里的i=9;a=3; e=30;这个又是怎么算的,能不能把里面算的过程讲给我看一下。谢谢了我知道i++是很算后自增,但是我想知道这个是怎么算出来的一个的一个过程。谢谢大家帮我写出来。我是一个初学者。

解决方案 »

  1.   

    b=(i++)+(i++);就是先运算再自增,那么第一次i++参与运算的值是3.自增为4.那后面那个i++因前一个已自增为4.则参与运算的为4.然后自增为5.那么b=3+4了.以此类推
      

  2.   

    int i = 3;
    int b=(i++)+(i++);
    等效于:
    int i = 3;
    int b = i;  // b = 3;
    i ++;
    b += i;      // b = 3 + 4
    i ++;所以,结果是:i=5; b=7; 依此类推。最后一个
    int i=3; 
    int a=(i++); // a=3; i=4;
    int e=(i++)+(i++)+(i++)+(i++)+(i++); // int e = 4 + 5 + 6 + 7 + 8 = 30;
      

  3.   

    对于i++,C++和JAVA的处理有所不同,对于C++是等到表达式完成后,才对i进行自增操作,而java则是取完i++的值后马上进行自增操作:
    举个例子大家看看:
       C++:
       int k = 6;
       int i = 3;
       if(k == (i++)+(i++))
       {
       cout<<"Enter the if case"<<endl;
       }
       else
       {
       cout<<"Enter the else case"<<endl;
       }
       JAVA:
       int k = 6;
       int i = 3;
       if(k == (i++)+(i++))
       {
              System.out.println("Enter the if case");
       }
       else
       {
              System.out.println("Enter the else case");
       }
       执行的结果分别为:
       C++:Enter the if case
       JAVA:Enter the else case
    显然在C++中,是语句执行完后再执行++操作的,这个从汇编代码中也可以看出,而对于JAVA则取完i++的值后,马上执行++操作.因此,对于int i=3;int b=(i++)+(i++);的处理
    C++中,b的值肯定为6,而java则为3+4=7,其它的类推.只要记住两者之间的最大差别:C++是表达式计算机完成后或语句完成后执行后加操作,而JAVA取完i++的值后马上后加,再执行其它的语句,不需要等到语句结束i的值就已经增加.