我正在努力实现遇到此代码段的联合查找问题。
while (root != id[root])
root = id[root];
不是一样吗
while ((root = id[root]) != id[root]);
除了可能是第二个构造至少执行一次赋值操作,而第一个构造即使初始条件为假也可能不会执行一次。还有其他区别吗?
我正在努力实现遇到此代码段的联合查找问题。
while (root != id[root])
root = id[root];
不是一样吗
while ((root = id[root]) != id[root]);
除了可能是第二个构造至少执行一次赋值操作,而第一个构造即使初始条件为假也可能不会执行一次。还有其他区别吗?
它们非常不同,想想它们的执行顺序。
首先检查是否root != id[root]
,然后分配root = id[root]
.
在第二个中,您首先分配(嵌套)然后检查。
通常的成语是BufferedReader
:
String line;
while((line=bufferedReader.readLine()) != null) {
}
如果我们将其更改为第一种方法:
String line;
while(line != null) {
line=bufferedReader.readLine()
}
我们甚至不会进入while循环......
不,这样看——
int i;
while(i != 10)
对比
int i;
while((i = 10) != 10)