【问题标题】:post Increment problem [duplicate]发布增量问题[重复]
【发布时间】:2011-10-08 12:13:35
【问题描述】:

可能重复:
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);            
        }
    }
}

输出:

0
0
0
0
0
0

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

【问题讨论】:

    标签: java


    【解决方案1】:

    这一行是空操作:

    k = k++;
    

    相当于:

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

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

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

    【讨论】:

      【解决方案2】:

      可能是你想得到类似的东西

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

      【讨论】:

      • 我觉得++k;k = ++k;
      • 感谢您的回复。但我想知道为什么 k 没有增加。
      【解决方案3】:

      你可以更好地使用:

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

      【讨论】:

      • 我想知道这背后的原因。公共类循环 { public static void main(String[] rgs) { int k=0,j=0; for (int i = 0; i
      【解决方案4】:

      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);            
              }
          }
      }
      

      【讨论】:

        【解决方案5】:
        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,然后返回 old k ,然后你将这个 old k 分配给 kk 为 0再次

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-06-23
          • 2013-09-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多