1

我正在努力实现遇到此代码段的联合查找问题。

while (root != id[root])
        root = id[root];

不是一样吗

while ((root = id[root]) != id[root]);

除了可能是第二个构造至少执行一次赋值操作,而第一个构造即使初始条件为假也可能不会执行一次。还有其他区别吗?

4

2 回答 2

3

它们非常不同,想想它们的执行顺序。

首先检查是否root != id[root]然后分配root = id[root].

在第二个中,您首先分配(嵌套)然后检查。

通常的成语是BufferedReader

String line;
while((line=bufferedReader.readLine()) != null) {
}

如果我们将其更改为第一种方法:

String line;
while(line != null) {
     line=bufferedReader.readLine()
}

我们甚至不会进入while循环......

于 2013-09-03T15:52:59.360 回答
1

不,这样看——

int i;

while(i != 10)

对比

int i;
while((i = 10) != 10)
于 2013-09-03T15:52:48.350 回答