Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么';这两个while循环的区别是什么?_C++ - Fatal编程技术网

C++ 什么';这两个while循环的区别是什么?

C++ 什么';这两个while循环的区别是什么?,c++,C++,这两个while循环有什么区别?我不明白他们在做什么 第一: while(condition) ; 第二: while(condition){ }; 没有区别,两个循环都包含一个空语句 实际的结果是一个永远不会结束的无限循环,除非有另一个线程或某些副作用改变条件第一个代码是第二个代码的可选缩写,当您只需要在循环中执行一个操作时,这非常合适,例如: while (condition is true) condition=dosomething(); 您可以像这样安全地重新编写: wh

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

第一:

while(condition) ;
第二:

while(condition){ };

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


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

第一个代码是第二个代码的可选缩写,当您只需要在循环中执行一个操作时,这非常合适,例如:

while (condition is true)
    condition=dosomething();
您可以像这样安全地重新编写:

while (condition is true)
{
    condition=dosomething();
}
这将是完全一样的

但是,如果您需要循环中的几个语句,您需要以某种方式对它们进行“分组”,以便编译器知道代码的哪些部分应该“循环”,这是通过
{
}

因此,对于一些不能使用缩写形式的语句,只能执行以下操作:

while (condition is true)
{
    condition=dosomething();
    dosomething2();
    dosomething3();
}
对于多线程编程,我们可以有下一种情况:

  • Thread1:将条件设置为true
  • Thread1:创建新的thread2并运行它
  • Thread1:现在需要等待thread2完成,thread2将在完成时将条件设置为false以通知第一个线程
  • 所以,对于这种情况,有时可以使用无限循环

    while(条件)
    while(条件){}-与我们上面看到的相同

    这是一个mean-do操作,但没有提供该操作,这意味着只需等待其他线程将该变量设置为false即可


    注意:这样的无限循环通常是不好的做法,最好避免使用它们,并且只有当您确定这有意义时才使用它们。循环本身是相同的,但第二个循环后面是null语句,因此如果此代码是较大控制结构的一部分,它们可以进行不同的解析:例如,如果它们是嵌套的“if”语句的一部分,则第一个语句后面可以跟“else”,但第二个语句后面不能。

    一个语句有一个额外的语句。您是否将每个语句都放在
    main()
    中,编译并运行,只是为了在询问之前看看会发生什么??