【问题标题】:Nature of Operator Precedence in javajava中运算符优先级的性质
【发布时间】:2016-01-04 09:49:51
【问题描述】:

我想知道下面的代码是如何产生“-1”输出的。

 class Demo1
 {
  public static void main(String[] arg)
  {
     int i,j;
     for(i=-2,j=2;i++>0;j--)
     {
               i=++i;   
     }
     System.out.print(i); 
  }
 }

上面的代码产生输出“-1”,但如何?谁能解释一下? 提前谢谢!

【问题讨论】:

标签: java loops operator-keyword core


【解决方案1】:

在您的 for 循环中,for(i=-2,j=2;i++>0;j--) i 将在比较之前首先递增,此时 i-1 并且由于它不是 > 0 它正在退出循环。

【讨论】:

    【解决方案2】:

    i-2 开头。检查i++ 是否大于0。这导致错误,因为-2<0for loop 条件中的后增量随后会产生值 i = -2 + 1

    【讨论】:

      【解决方案3】:

      您的答案是因为您编写了 for 循环。 您的流程不会进入 for 循环。 变量 i 的初始值为 -2 且 j 为 2 , 你的“for循环”条件是 - i 应该大于0(因为它的后增量)并且这里你的代码没有进入“for循环”,因为i中的值是-2然后后增量(i++)发生并且i 的值变为 -1 并打印出来。 更多详情,您可以阅读pre & post increment

      【讨论】:

        【解决方案4】:
        1. i=-2; 因为i++>0false(因为-2<0)它退出循环。
        2. 现在i 后递增为-1
        3. print 语句现在打印i 的值,即-1

        【讨论】:

          【解决方案5】:

          与运算符优先级无关

          无论i++>0 中的运算符按什么顺序执行,结果始终相同:以i = -2 开头,结果将为falsei 的值为-1

          【讨论】:

            猜你喜欢
            • 2012-12-13
            • 2021-10-25
            • 2011-12-28
            • 2015-08-29
            • 1970-01-01
            • 2011-09-16
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多