是否有可能在c ++中有一个while循环,使得检查在循环的中间而不是开始或结束?
-
05-07-2019 - |
题
我想让while循环执行类似下面的操作,但这在c ++中是否可行?如果是这样,语法如何?
do {
//some code
while( expression to be evaluated );
// some more code
}
我希望一旦while语句决定表达式不再为真,就要退出循环(即如果表达式为false,//则不执行更多代码)
解决方案
你可以这样做:
while (1) {
//some code
if ( condition) {
break;
}
// some more code
}
其他提示
一点背景和分析:你所要求的我称之为“ Dahl loop ,以Simula成名的Ole-Johan Dahl命名。正如Sean E.所说,C ++没有它们(ima的答案放在一边),尽管其他一些语言(尤其是Ada)。它可以代替“do-while”。和“while-do”循环,这使它成为一个有用的结构。更一般的情况允许任意数量的测试。虽然C ++没有Dahl循环的特殊语法,但Sean McCauliff和AraK的答案完全等同于它们。 “while(true)”是指“while(true)”。循环应该由编译器转换为简单的跳转,因此编译的版本与假设的Dahl循环的编译版本完全无法区分。如果您发现它更具可读性,您也可以使用
do {
...
} while (true);
好吧,我认为你应该把条件移到循环的中间(?):
while (true)
{
...
// Insert at favorite position
if (condition)
break;
...
}
技术上,是的:
for ( ;CodeBefore, Condition; ) {CodeAfter}
答案是否定的,当while语句应该评估的条件为真时,你不能让你的循环自动终止,直到它在循环的顶部(或底部)实际评估它为止。 while语句不能放在循环的中间。
不隶属于 StackOverflow