繁体   English   中英

在 c 或 c++ 中,循环可以同时包含“do”和“while”部分吗?

[英]In c or c++ can a loop have both "do" and "while" sections?

考虑到do ... whilewhile循环中的公共while()语句,以及将while循环体替换为do ... while上的分号的do ... while就好像它是一个复合语句被转换成空语句(或结束长语句的行):

任何 C 家族语言中的语法是否都允许“do while 和 while”循环同时定义两个主体?

据推测,语义将是一个循环,其中一些操作在检查之前发生,一些在之后发生。

例如:

do {
  foo();
} while ( baz() == true ){
  bar();
}

foo()总是会出现一次,但bar()只会在baz()返回 true 后才会出现。

它们不能同时使用。 语法是:

while (表达式)语句

或者:

语句while (表达式);

所以你不能像你的例子那样这样做:

do {
  foo();
} while ( baz() == true ){
  bar();
}

但是你可以接近这个:

do {
  foo();
  if (!baz()) break;
  bar();
} while (1);

你似乎在要求

do
    statement0
while (condition)
    statement1

这可以通过以下方式完成:

do
{
    statement0
    if (!(condition)) break;
    statement1
} while (1);

在 C 或 C++ 中,循环是否可以同时包含“do”和“while”部分?

任何 C 家族语言中的语法是否都允许“do while 和 while”循环同时定义两个主体?

不,您可以使用 while 循环或 do-while 循环。 while 循环与 do-while 循环不同,反之亦然。

您不能将两种类型合并在一起。


它只能是一个 do-while 循环:

do 
{ 
    /* statements  */ 
}while(condition);

或 while 循环:

while(condition)
{
    /* statements */
};

在 while 循环中,您特定条件执行语句。 在 do while 循环中,您至少在循环中运行一次,直到达到条件。 但是两个循环的中心在最后都是相同类型的语句/循环体。 因此,添加第二个是没有意义的。


当您使用 do-while 循环时,就像您所做的那样:

do {
  foo();
} while ( baz() == true ){
  bar();
}

在 do-while 循环条件之后由{}包围的区域:

{
  bar();
}

不是 do-while 循环的一部分。


这将被视为只是一堆在一个单独的范围块报表时将不-while循环满足/完成得到执行的。

但即便如此,如果您设置了分号,编译器也只会让这个通过; 在 do-while 循环条件之后:

do {
  foo();
} while ( baz() == true );{      // Note the semicolon ";".
  bar();
}

使用提供的代码:

do {
  foo();
} while ( baz() == true ){
  bar();
}

编译器会抛出错误。

C 或 C++ 中不允许同一循环中的 do 和 while 块。 它也不允许在任何其他编程语言中使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM