java中运算符优先级的性质

时间:2016-01-04 09:49:51

标签: java loops operator-keyword core

我想知道以下代码如何产生“-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”,但如何?有人能解释一下吗? 提前谢谢!

5 个答案:

答案 0 :(得分:1)

i-2开头。您检查i++是否大于0。由于-2<0,这会导致错误。您for loop条件的后增量会在之后生成值i = -2 + 1

答案 1 :(得分:1)

在你的for循环中,for(i=-2,j=2;i++>0;j--) i会在比较之前首先递增,当时i-1,因为它不是> 0它正在退出循环。

答案 2 :(得分:1)

你的答案是因为你写过的for循环。 你的流量不会进入循环。 变量i的初始值为-2,j为2, “for循环”的条件是 - 我应该大于0(因为它的后增量)并且这里你的代码没有进入“for循环”,因为i中的值是-2然后后增量(i ++)发生并且i的值变为-1,它打印出来。 有关详细信息,请参阅pre & post increment

答案 3 :(得分:0)

  1. i=-2;由于i++>0false(因为-2<0),它会退出循环。
  2. 现在i后递增为-1
  3. print语句现在打印i的值-1

答案 4 :(得分:0)

与运营商优先级无关

无论执行i++>0中的运算符的顺序如何,结果始终相同:当您从i = -2开始时,结果将为false,值为i将是-1