java表达式中的后增量

时间:2014-07-29 20:46:15

标签: java

在这个例子中:

int i = 1;

while(i < 10)
    if(i++%2 == 0)
        System.out.println(i);

为什么输出3,5,7,9而不是2,4,6,8

3 个答案:

答案 0 :(得分:4)

条件在前一个值i上执行,在它递增之前(均匀),但输出是在递增的值i(奇数)上完成的。 / p>

答案 1 :(得分:2)

在变量返回变量值后应用的++运算符,并在计算表达式后递增变量。语义与此相同:

int i = 1;
while(i < 10) { 
    boolean cond = i % 2 == 0;
    i = i + 1;
    if(cond) {
        System.out.println(i);
    }
}

答案 2 :(得分:0)

后增量运算符,在表达式中使用其操作数的当前值,然后递增它。

我们可以使用&#39; 2&#39;的字面值来解决这个问题。例如。 基本上这就是你现在的代码所做的事情:

int i = 2;

if (i % 2 == 0) //true, 2 % 2 = 0
    i = i + 1;  //i now becomes 3
    System.out.println (i);  

如果我们删除循环并放回代码

,则使其更简单
int i = 1;

if (i++ % 2 == 0) //1 % 2 != 0 

   System.out.println (i);  //Nothing will print for the if statement

   System.out.print i;  //Will print 2, because this print statement is outside
                        //the body of the if-statement

要获取您要查找的输出,您必须使用前缀增量运算符(++ i)

int i = 1;

if ( ++i % 2 == 0)  
    System.out.println (i);

这相当于

 int i = 1
 if ( (i + i) % 2 == 0) //++i increments i and then uses it in the expression
      System.out.println (i);