大哥,你好象晕了。
是b++; 不是 b=b++;

解决方案 »

  1.   

    楼上,他知道是b++,但是他就要用b=b++;试试不可以吗?
    不过偶也没看出来到底怎么回事?
      

  2.   

    改成b=++b;就会得到预料结果。
    b=b++;后b还是等于b,先用后加
      

  3.   

    我当然知道是b++
    但是b=b++为什么会如此?
    先用後加,那也是加了呀。b应该加1了。怎么还是0??
    大家来研究呀。
      

  4.   

    b++是经过操作后b加一,而++b 是在操作前加一。
      

  5.   

    a = a++ 在java中是a的值还是原来执行前的值
    比如
    a = 0;
    a = a++;
    那么a还是为0的,为什么会产生这种情况呢,道理很简单。
    JAVA为了跨平台,在对值进行赋值的时候是用的堆栈,而不是象c等语言用的是寄存器。
    大致的执行过程如下;
    push a;
    a ++;
    pop a;
    如果对他感兴趣的话,你可以看看字节码就知道了。
      

  6.   

    这样子
    ====================================
    a = 1;
    a = a++;
    首先执行右边:
       右边执行结果为1,取出值 1,暂存
    然后a 自动加1,这时a值为2
    最后执行赋值操作:
      把右边执行结果赋给a,这时,a的值又变成1了
    所以上面的结果是正确的
    ======================>>>>>>by jieyf
      

  7.   

    你在c++中试过可以达到 0123456789 ?在java里的确是0000000000
      

  8.   

    上面的老兄说得对,在java里是这样的,但在C++ 里面就奇怪了,安道理也应该是输出0000000000的,为什么会是0123456789?C++ 中,假设这样的代码:
             int b =1;
    int c = b++;
    b = c;
    cout<<"b="<<b<<endl;
    输出是:1
    如果是:
    int b =1;
    b = b++;
    cout<<"b="<<b<<endl;
    输出就是:2 了,看来是C++ 做了手脚了。
      

  9.   

    特级关注。hello_wyq(半瓶墨水) 的解释好象很对。a=0;a++;上面的操作在堆栈中又是怎么样的呢?
      

  10.   

    这和在堆栈中执行没有关系,C/C++也是在运行的栈中执行,
    这实际上是JAVA和C在处理表达式副作用的语义不同。在C中,++运算符对变量加1是在整个副值语句后才执行
    比如a=a++;便宜后的伪码为
       mov t1,a
       mov a,t1 
       inc a
      
     而在JAVA中则是紧接到运算符后就执行了
       mov t1,a
       inc a
       mov a,t1
     比如a=(a++)+a++;的对比也是这样
     对比JAVA的字节码和C的汇编代码就可以知道。
     这个问题以前讨论过呀
       
       
      

  11.   

    在c里 
    b=b++;可以拆分成两个语句b=b;b++;在java中,不能这样拆分看这个例子....
    int b = 0;
    int c1,c2,c3,c4,c5,c6;

    b=0;
    c1=b++;
    System.out.println("NO c1"+": "+c1); b=0;
    c2=b++ + b++;
    System.out.println("NO c2"+": "+c2); b=0;
    c3=b++ + b++ + b++;
    System.out.println("NO c3"+": "+c3); b=0;
    c4=b++ + b++ + b++ + b++;
    System.out.println("NO c4"+": "+c4); b=0;
    c5=b++ + b++ + b++ + b++ + b++;
    System.out.println("NO c5"+": "+c5); b=0;
    c6=b++ + b++ + b++ + b++ + b++ + b++;
    System.out.println("NO c6"+": "+c6);
      

  12.   

    在c里,上面的输出应该都是0,但java中就完全不一样了....eg:  c6=0+1+2+3+4+5=15所以,b=b++  在java中相当于  c=b++;b=c;
      

  13.   

    在JAVA中的执行过程大概是
    temp=a++;
    a=temp;
      

  14.   

    各人讲的都有道理我也发表一下我不同的意见是否b=b++
    先b赋值给b,之后b++,其实他们两个是不同的,b++是表达式循环第一次b=0
    第二次:使用第一次的b=0,赋值给b还是0,之后b++循环第三次:
    使用第二次的b=0,赋值给b还是0,之后b++.......
    ----------------------------------------
    ==================================================================
    注意:此人因发表爱国言论,被斑竹hexiaofen*扣除6分信誉分,问你死未?!*****************************************************************