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<0
。 for loop
条件中的后增量之后产生值 i = -2 + 1
,
在你的 for 循环中 for(i=-2,j=2;i++>0;j--)
i
将在比较之前首先递增,此时 i
是 -1
而不是 > 0
它正在退出循环。
i=-2;
由于 i++>0
是 false
(因为 -2<0
)它退出循环。
- 现在
i
是 post-incremented 到 -1
。
- 打印语句现在打印
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
我想知道以下代码如何产生“-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<0
。 for loop
条件中的后增量之后产生值 i = -2 + 1
,
在你的 for 循环中 for(i=-2,j=2;i++>0;j--)
i
将在比较之前首先递增,此时 i
是 -1
而不是 > 0
它正在退出循环。
i=-2;
由于i++>0
是false
(因为-2<0
)它退出循环。- 现在
i
是 post-incremented 到-1
。 - 打印语句现在打印
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