-1

这两个while循环有什么区别?我不明白他们在做什么。

第一的:

while(condition) ;

第二:

while(condition){ };
4

3 回答 3

1

没有区别,两个while循环都包含一个空语句。

实际结果是一个永远不会结束的无限循环,除非有另一个线程或某些副作用发生变化condition

于 2013-11-03T05:29:05.487 回答
0

循环本身是相同的,但第二个循环后面是 null 语句,因此如果此代码是更大控制结构的 oart,它们可以进行不同的解析:例如,如果它们是嵌套的“if”语句的一部分,则第一个一个可以跟'else',但第二个不能。

于 2013-11-03T07:10:27.253 回答
0

第一个代码是第二个代码的可选缩写形式,适用于只需要在循环中执行 1 个操作的情况,例如:

while (condition is true)
    condition=dosomething();

你可以安全地重写这个:

while (condition is true)
{
    condition=dosomething();
}

这将是完全一样的

但是如果您需要循环中的多个语句,则需要以某种方式将它们“分组”,因此编译器将知道代码的哪些部分应该“循环”,这是通过{和完成的}

所以,对于一些不能使用简写形式的语句,你只能这样做:

while (condition is true)
{
    condition=dosomething();
    dosomething2();
    dosomething3();
}

对于多线程编程,我们可以有下一个情况:

  1. Thread1:设置条件为真
  2. Thread1:创建新的thread2并运行它
  3. 线程1:现在需要等到线程2完成,线程2完成后将条件设置为false以通知第一个

因此,对于这种情况,有时您可以使用无限循环,例如

while (condition) ;while (condition) { };- 与我们在上面看到的相同

这意味着 - 执行单个操作,但不提供操作,这意味着只是等到其他线程将此变量设置为 false

注意:这种无限循环通常是不好的做法,最好避免使用它们,并且仅在您确定这样做有意义时才使用

于 2013-11-03T05:43:55.507 回答