java 中运算符优先级的性质

Nature of Operator Precedence in java

我想知道以下代码如何产生“-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”,但是怎么做到的?谁能解释一下? 提前致谢!

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

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

  1. i=-2; 由于 i++>0false(因为 -2<0)它退出循环。
  2. 现在 i 是 post-incremented 到 -1
  3. 打印语句现在打印 i 的值,即 -1

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

与运算符优先级无关.

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