【问题标题】:Same output for postincrement and preincrement in a for loop [duplicate]for循环中后增量和前增量的相同输出[重复]
【发布时间】:2016-02-13 09:26:52
【问题描述】:

这是两个用于 for 循环的后增量和前增量运算符的 Java 程序。两者都产生相同的输出。那么在 for 循环中使用前增量和后增量运算符有什么区别。

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

  }
}

产生输出

C:\fx>java Printi
0
1
2
3
4

for 循环中的这个后增量运算符也产生相同的输出

public class Printj{
public static void main(String args[])
  {
  int j=0;
  for(j=0;j<5;j++){
  System.out.println(j);
  }

  }
}

C:\fx>java Printj
0
1
2
3
4

【问题讨论】:

  • 在 for 循环中,两者的使用没有区别,就使用它们而言......我看到程序员可以互换使用它们!

标签: java


【解决方案1】:

x++++x 之间的唯一区别只能在具有许多运算符和操作数的语句中显示。

考虑一下:

int x = 10;
int y = ++x;

x 首先增加前缀++。然后将递增的x 分配给y。所以在这段代码之后,x = 11 和 y = 11。

如果我将其更改为:

int x = 10;
int y = x++;

x 首先被分配y,因为后缀++ 被执行最后。将 x 分配给 y 后,x 会递增。所以在这段代码之后,x = 11 和 y = 10。

这就是区别。在您的示例中,您只有一个操作:++x。因为只有一个,所以不能显示操作的顺序!

【讨论】:

    【解决方案2】:

    在 for 循环中,您构建它的方式没有区别。当“j”在循环内打印出来时,它已经被预先或后评估了。

    关于前或后评估的唯一有趣的时间是当您实际将该评估应用于变量时,这就是@Elliot Frish 在他的回答中所显示的。

    在评估之后,代码理所当然地不会看到差异。

    当您在 while 循环中构建类似的内容时,可能会产生更大的不同。

    【讨论】:

      【解决方案3】:

      因为您没有显示增量表达式返回的值)。要查看差异,请比较

      for(int j=0;j<5;){
          System.out.println(j++);
      }
      

      for(int j=0;j<5;){
          System.out.println(++j);
      }
      

      for 循环语法的所有三个部分都是可选的。

      【讨论】:

        猜你喜欢
        • 2011-06-10
        • 2013-08-26
        • 2016-05-02
        • 2014-12-09
        • 2014-08-11
        • 2013-06-26
        • 1970-01-01
        • 1970-01-01
        • 2016-02-02
        相关资源
        最近更新 更多