没明白一个问题
int a=0;
int b=0;
b=a++;
这样 b=0 a=1了
为什么
a=a++;
最终a=0 为什么a没变成1????

解决方案 »

  1.   

    你知道a=a++是什么意思吗??
    a=a++就是先将a的值赋给a,然后再加!再好好理解!这个很重要的,后面有很多知识点会关系到这个的!
      

  2.   

         你可以这样理解,在计算的过程中,等式右边的变量编程其他的了
         比方说a=a+1。在处理的时候,计算机内部会变成a,a1两个变量。
         a1=a
         a=a1+1
         然后再把a1销毁掉。
      

  3.   

    b=a++是这么做的:
    b=a,后a+1.
      

  4.   

    http://blog.csdn.net/ZangXT/archive/2008/11/05/3229281.aspx
      

  5.   

    这样说吧 ,,
    b=a++;b是先等于a,a在++ 也就是b的直是a,而不是a++后的直。。所以说b=0 a=1
    如果b=++a,则是b等于++a,也就是 b=1,a=1;b=a++,因为a在+号前 所以没等a加加b就获得了a的直,所以只取到本身a直,
    b=++a,是a先加加过了 才把直给了b 所以ab都等于1。。
    明白了吗?
      

  6.   

    b = a++;
    是先把a的值赋给b,然后再执行a+1操作
    b = ++a;
    是先执行a+1操作然后再赋值给b
      

  7.   

    b=a++的意思是先将a的值赋给b,然后a+1,所以b=0 a=1
    a=a++的意思是先将a的值赋给a,此时a还是0,然后a+1,当然a就是1了
      

  8.   

    你可以先把那个b看做是a  啊~!都是个变量应该可以这么认为,b 能理解a 当然也能理解了!我也是初学者,去年学c 没学到东西,现在正在学JAVA 希望能与大家共勉!
      

  9.   

     你可以这样理解,在计算的过程中,等式右边的变量编程其他的了 
        比方说a=a+1。在处理的时候,计算机内部会变成a,a1两个变量。 
        a1=a 
        a=a1+1 
        然后再把a1销毁掉。
      

  10.   

    有点意思!是在解释下面的结果为什么为0吗?
             int a=0;
             a=a++;
           System.out.println(a);
    我也有点疑惑,既然a自加是在赋值后,按道理应该会是1啊.
    如果改成:int a=0;
             int b=a++;
           System.out.println(a);
    此时a的值为1
      

  11.   

    a=a++
    为什么a没变成1;;;;
    这个问题和b=a++ 是一个道理,,
    你说的a=0,是只a=a+1中的第一个a,他的直 是0;也就是说句代码的输出结果是第一个a的直 也就是0;但是这时a 本身的值已经自加了,当你在用到a的时候 a的值就是1了;//
      

  12.   

    这个和编译器有关
    如果在VC就不一样
    在JAVA中也不一样
      

  13.   

    a=a++ 在计算机中的具体步骤是:1. a=a 2. a+1 所以a还是原来的值更多更新电影请到:http://sun.51zhuanzhuan.com