5

我想让一个while循环执行以下操作,但这在c ++中可能吗?如果是这样,语法如何?


do {
    //some code
    while( expression to be evaluated );
    // some more code
}

我希望在while语句确定表达式不再为真时立即退出循环(即如果表达式为假,//不执行更多代码)

4

5 回答 5

12

你可以做:

while (1) {
   //some code
   if ( condition) {
       break;
   }
   // some more code
}
于 2009-11-27T06:36:37.417 回答
6

一点背景和分析:您所要求的我听说过称为“达尔循环”,以 Simula 名声的 Ole-Johan Dahl 命名。正如 Sean E. 所说,C++ 没有它们(除了 ima 的答案),尽管其他一些语言有(特别是 Ada)。它可以代替“do-while”和“while-do”循环,这使它成为一个有用的结构。更一般的情况允许任意数量的测试。虽然 C++ 没有 Dahl 循环的特殊语法,但 Sean McCauliff 和 A​​raK 的答案与它们完全等价。“while (true)”循环应该被编译器变成一个简单的跳转,所以编译后的版本与假设的 Dahl 循环的编译版本完全没有区别。如果你觉得它更具可读性,你也可以使用

do {
    ...
} while (true);
于 2009-11-27T07:25:42.173 回答
3

好吧,我认为您应该将条件移动到循环的中间(?):

while (true)
{
  ...
  // Insert at favorite position
  if (condition)
    break;
  ...
}
于 2009-11-27T06:36:52.817 回答
3

从技术上讲,是的:

 for ( ;CodeBefore, Condition; ) {CodeAfter}
于 2009-11-27T06:48:55.663 回答
1

答案是否定的,当 while 语句应该评估的条件为真时,您不能让循环自动终止,直到它在循环的顶部(或底部)实际评估它。while 语句不能放在循环的中间。

于 2009-11-27T06:46:07.590 回答