java中运算符优先级的本质[重复]

问题描述 投票:0回答:5

我想知道下面的代码如何产生“-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 operator-precedence
5个回答
1
投票

在 for 循环中

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


1
投票

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


1
投票

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


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

0
投票

与运算符优先级无关

无论

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

© www.soinside.com 2019 - 2024. All rights reserved.