int n=0;
for(int i=0;i<50;i++)
{
   n=n++;
}
System.out.println("n="+n);最后打印为0;
请各位大哥告诉这是为什么啊????

解决方案 »

  1.   

    n++执行后n为1而返回值为0,再把0赋给n,n又变成0,所以最后还是0
      

  2.   

    因为第一次循环的时候:
    n => 0;
    n = n++ => 0; // n是primative, 这条语句显示将n 赋值 0, 然后n++(已经是一个新的值但没有改变原来的那个n) 原来的n还是0.
    后面也是一样.你直接n++就出来结果了.
      

  3.   


    程序运行到:n=n++;时,先把n赋值到给n,然后++,就算有返回值也不会再赋值n了啊
      

  4.   

    n=n++
    n++是先赋值后运算
    n还是0 
    这样一直循环
      

  5.   

    你这样就理解了
    int n=0;
    System.out.println(n++);//输出为0,明白了吗?
    System.out.println(n);//此时才输出为1
      

  6.   


    public class aaaa {
    public static void main(String[] args) {
    int n=0; 

    for(int i=0;i <3;i++) 

    int a=n++;

    System.out.println(n);
    System.out.println(a);
      n=a; 

    System.out.println("n="+n); 
    }}
    结果为:1
    0
    1
    0
    1
    0
    n=0其实是n++后。n的值是为1了。然后又用0赋给n了。那n的值就永远为0了。
      

  7.   

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

  8.   

    for(int i=0;i <50;i++) 

      n += 1; 
    } 如果非得++,就这么来吧
      

  9.   

    n=n++;中还是相当于把n赋值给了n,所以它一直没有改变还是0
      

  10.   

    int n = 0; 
    n++;
    System.out.println(n);
    你这样执行后的结果就为1 int n = 0; 
    n = n++;
    System.out.println(n);
    这样执行的结果肯定是0,因为n++执行后n为1而返回值为0,再把0赋给n,n又变成0,所以最后还是0 
    通过这两个例子的对比不知楼主能不能知道原因
      

  11.   

     n=n++;
     其实可以分成以下3句
     n1=n;
     n=n1;
     n1=n1+1;
      

  12.   

    int m=n++ 与 int m=++n;1.int m=n++,它先将n的值赋给m,然后自身再加1.
    2.int m=++m,它是n先加一,然后再将加后n的值赋给m的
    3,不管执行那个操作,n的值都加一了