java - 指令表现不符合预期

标签 java for-loop

这是我不太明白的代码:

for(int i = 0; i < (i = 1); i++)
            System.out.println("FOR " + i);

我希望这段代码不会显示任何内容,但它却输出“FOR”一次。

我认为 i < (i=1) 应该将 i 的值与赋值 i=1 的结果进行比较,即 1 -> 所以 1<1 这是 false -> 退出循环而不显示任何内容。

也许这种比较的方式与我理解的不同。谢谢!

最佳答案

i < (i = 1)

这将被评估为:-

0 < (i = 1)  -->   0 < 1  --> true, so for loop executes

下次运行时,i++被执行并且 i变成2 (因为,i 是来自上一次循环运行的 1 赋值的 (i = 1)。)

所以,i < (i = 1)

评估为:-

2 < 1 --> false.

因此,for 循环退出。

注意:- 在您的 condition part (i < (i = 1)) 中,在赋值(i = 1)发生之前,LHS 已被评估为 0,并存储在内存中。因此,它将保持为 0。这完全取决于评估的顺序。所以作业i = 1不会影响LHS上的表达值。

关于java - 指令表现不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13306209/

相关文章:

c - 这是一个合适的for循环优化吗

java - 数据库已更新,但选择查询在 hibernate 中未给出结果

java - 我可以在 Java 中使用 for-each 遍历 NodeList 吗?

java - 如何在java中将超过9的字符放在上标中?

java - 如何在 RAD/Websphere 8.5 中进行热代码替换

c++ - 简单的 C++ for 循环意外输出

linux - For 循环不在 Shell 中的函数声明内运行

java - MapStruct 反向链接映射可能吗?

javascript - 将 for 循环的一部分放入 javascript 的函数中

python - 使用列表推导式计算所有列表元素的总和