我正在努力实现我遇到此片段的联合查找问题。
while (root != id[root])
root = id[root];
与
不一样while ((root = id[root]) != id[root]);
除了可能是第二个构造执行赋值操作至少一次,而第一个构造如果初始条件为假则甚至不执行一次。还有其他差异吗?
答案 0 :(得分:3)
他们是非常不同的,想一想他们被执行的顺序。
首先检查root != id[root]
和然后是否指定了root = id[root]
。
在第二个你首先分配(嵌套)和然后检查。
通常的习惯用法是BufferedReader
:
String line;
while((line=bufferedReader.readLine()) != null) {
}
如果我们将其更改为第一种方法:
String line;
while(line != null) {
line=bufferedReader.readLine()
}
我们甚至不会进入while循环...
答案 1 :(得分:1)
没有。这样看 -
int i;
while(i != 10)
VS
int i;
while((i = 10) != 10)