【问题标题】: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<0。 for loop 条件中的后增量随后会产生值 i = -2 + 1,
【解决方案3】:
您的答案是因为您编写了 for 循环。
您的流程不会进入 for 循环。
变量 i 的初始值为 -2 且 j 为 2 ,
你的“for循环”条件是 - i 应该大于0(因为它的后增量)并且这里你的代码没有进入“for循环”,因为i中的值是-2然后后增量(i++)发生并且i 的值变为 -1 并打印出来。
更多详情,您可以阅读pre & post increment
【解决方案4】:
-
i=-2; 因为i++>0 是false(因为-2<0)它退出循环。
- 现在
i 后递增为-1。
- print 语句现在打印
i 的值,即-1。
【解决方案5】:
与运算符优先级无关。
无论i++>0 中的运算符按什么顺序执行,结果始终相同:以i = -2 开头,结果将为false,i 的值为-1