[英]In c or c++ can a loop have both "do" and "while" sections?
考虑到do ... while
和while
循环中的公共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.