发布增量问题

时间:2011-07-19 12:46:44

标签: java

  

可能重复:
  Why does this go into an infinite loop?

public class loop
{

    public static void main(String[] args)
    {
        int k=0;
        for (int i = 0; i < 6; i++) 
        {
            k = k++;
            System.out.println(k);            
        }
    }
}

out put:

0
0
0
0
0
0

你能解释一下为什么上面产生的零甚至会增加k值并将其分配给k。

6 个答案:

答案 0 :(得分:8)

此行是无操作:

k = k++;

相当于:

int tmp = k;
k = k + 1;
k = tmp;

您正在递增k,但随后将原始值分配回k

我希望你确实没有这样的代码......虽然这段代码的行为在Java中有明确定义,但是(显然)令人困惑。

答案 1 :(得分:0)

可能是你想要获得像

这样的东西
int k=0;
    for (int i = 0; i < 6; i++) 
    {
        k = ++k;
        System.out.println(k);            

    }

答案 2 :(得分:0)

你甚至可以更好地使用:

for(int i = 0; i < 6; i++)
{
    System.out.println(i);
}

答案 3 :(得分:0)

k++代码将k的值递增1,然后返回预递增的值。因此,以下一行:

k = k++;

将一个加到k,然后将k的原始值(由k ++返回)赋给k。这意味着k随着它的原始值而结束。

public class loop {
    public static void main(String[] args) {
        int k=0;
        for (int i = 0; i < 6; i++) {
            k++; // increments k by 1
            System.out.println(k);            
        }
    }
}

答案 4 :(得分:0)

public class loop
{

    public static void main(String[] args)
    {
        int k=0;
        for (int i = 0; i < 6; i++) 
        {
            k++; // k increased. No reasons to assign anything
            System.out.println(k);            
        }
    }
 }

k++增加k,然后返回 k,然后将此 k分配给{ {1}}和k再次为0

答案 5 :(得分:0)

@vedamurthy,可能是此链接 - Unary Operators会回答您的问题。

或阅读所有章节 - Java Operators,以获得更多理解。