【问题标题】:The difference between while and do while C++? [duplicate]while 和 do while C++ 的区别? [复制]
【发布时间】:2014-10-03 16:23:01
【问题描述】:

我希望有人解释一下 C++ 中 while 和 do while 的区别

我刚开始学习 C++,使用这段代码我似乎得到了相同的输出:

int number =0;

while (number<10)
{
cout << number << endl;
number++
}

还有这段代码:

int number=0;

do
{
cout << number << endl;
number++
} while (number<10);

这两个计算的输出都是相同的。所以好像没什么区别。 我试图寻找其他示例,但它们看起来很难理解,因为它包含数学内容和其他我还没有完全学会的东西。我的书也对我的问题给出了一种迷幻的答案。

有没有更简单的例子来说明这两个循环之间的区别?

我很好奇

【问题讨论】:

  • 提示:如果你以int number = 11开头会发生什么?

标签: c++ loops while-loop


【解决方案1】:

while 循环是一个入口控制循环,即它首先检查while(condition){ ...body... } 中的条件,然后执行循环的主体 并继续循环并重复该过程,直到条件为假。

do while循环是一个退出控制循环,即它检查条件do{...body...}while(condition) 正文之后的循环已经执行do while循环中的主体总是会至少执行一次)然后再次循环遍历主体直到条件被发现是假的。

希望这会有所帮助:)

例如: 在 while 循环的情况下,在这种情况下不会打印任何内容,因为 1 不小于 1,条件失败并退出循环

int n=1;
while(n<1)
    cout << "This does not get printed" << endl;

而在 do while 语句被打印的情况下,因为它现在对条件一无所知,直到它至少执行一次主体然后因为条件失败而停止。

int n=1;
do
   cout << "This one gets printed" << endl;
while(n<1);

【讨论】:

  • 非常感谢,我想我现在已经理解了,需要另一个例子而不需要计算我认为真正看到区别,谢谢!
【解决方案2】:

如果您考虑使用不同的起始值,您可以更清楚地看到差异:

int number = 10;

while (number<10)
{
    cout << number << endl;
    number++
}
// no output

在第一个示例中,条件立即失败,因此循环不会执行。但是,由于在第二个示例中的循环代码之后 才测试条件,因此您将获得一次迭代。

int number = 10;

do
{
    cout << number << endl;
    number++
}
while (number<10);
// output: 10

【讨论】:

    【解决方案3】:

    while 循环只会执行条件满足。而 do while 循环将在第一次执行时不验证条件,直到初始执行后才执行。

    【讨论】:

      【解决方案4】:

      while 循环首先计算 number &lt; 10,然后执行主体,直到 number &lt; 10false

      do-while 循环,执行主体,然后计算 number &lt; 10,直到 number &lt; 10false

      例如,这不打印任何内容:

      int i = 11;
      
      while( i < 10 )
      {
          std::cout << i << std::endl;
          i++;
      }
      

      但这会打印11:

      int j = 11;
      
      do
      {
          std::cout << j << std::endl;
          j++;
      }
      while( j < 10 );
      

      【讨论】:

      • 还有其他需要考虑的; while 保证至少对条件进行一次评估,而do...while 则不是(您可以breakcontinue)。
      猜你喜欢
      • 1970-01-01
      • 2016-04-01
      • 2022-01-03
      • 2013-04-10
      • 2011-04-07
      • 1970-01-01
      • 2013-12-01
      • 1970-01-01
      • 2019-03-28
      相关资源
      最近更新 更多