这两个while循环有什么区别?我不明白他们在做什么。
第一的:
while(condition) ;
第二:
while(condition){ };
没有区别,两个while
循环都包含一个空语句。
实际结果是一个永远不会结束的无限循环,除非有另一个线程或某些副作用发生变化condition
。
循环本身是相同的,但第二个循环后面是 null 语句,因此如果此代码是更大控制结构的 oart,它们可以进行不同的解析:例如,如果它们是嵌套的“if”语句的一部分,则第一个一个可以跟'else',但第二个不能。
第一个代码是第二个代码的可选缩写形式,适用于只需要在循环中执行 1 个操作的情况,例如:
while (condition is true)
condition=dosomething();
你可以安全地重写这个:
while (condition is true)
{
condition=dosomething();
}
这将是完全一样的
但是如果您需要循环中的多个语句,则需要以某种方式将它们“分组”,因此编译器将知道代码的哪些部分应该“循环”,这是通过{
和完成的}
所以,对于一些不能使用简写形式的语句,你只能这样做:
while (condition is true)
{
condition=dosomething();
dosomething2();
dosomething3();
}
对于多线程编程,我们可以有下一个情况:
因此,对于这种情况,有时您可以使用无限循环,例如
while (condition) ;
或while (condition) { };
- 与我们在上面看到的相同
这意味着 - 执行单个操作,但不提供操作,这意味着只是等到其他线程将此变量设置为 false
注意:这种无限循环通常是不好的做法,最好避免使用它们,并且仅在您确定这样做有意义时才使用