int i=1;
        while(i<10)
            if((i++)%2==0)
                System.out.println(i);
正确答案是:
3
5
7
9
可我认为是
2
4
6
8
10

(i++)不是优先计算吗?

解决方案 »

  1.   

    和我以前碰到的差不多了
    也是寄存器,stack的问题了看看这个:
    http://community.csdn.net/Expert/topic/5067/5067877.xml?temp=.613003
      

  2.   

    i%2 ==0
    i++
    System.out.println(i)没错
      

  3.   

    i%2 ==0
    i++
    System.out.println(i)
    --------------------------
    就是说优先级还是%比++高了?
      

  4.   

    看你的程序先
    int i=1;
            while(i<10)
                if((i++)%2==0)
                    System.out.println(i);
    首先理解((i++)%2==0)这个话的意思。i++的意思是先把i拿来用,然后自增。那么,((i++)%2==0)的意思就是i%2==0;i=i+1;这两个合起来的意思。理解这一步很重要。我们分析数字i,当i=1的时候,i%2显然不等于0,所以不执行下面的输出语句,但是i要自增。下一次时候,i=2了,那么i%2==0成立,然后i自增为3,然后再打印i的值就是3。其他的也一样这样分析。不知道这样说你能不能懂哦。