我想让一个while循环执行以下操作,但这在c ++中可能吗?如果是这样,语法如何?
do {
//some code
while( expression to be evaluated );
// some more code
}
我希望在while语句确定表达式不再为真时立即退出循环(即如果表达式为假,//不执行更多代码)
我想让一个while循环执行以下操作,但这在c ++中可能吗?如果是这样,语法如何?
do {
//some code
while( expression to be evaluated );
// some more code
}
我希望在while语句确定表达式不再为真时立即退出循环(即如果表达式为假,//不执行更多代码)
你可以做:
while (1) {
//some code
if ( condition) {
break;
}
// some more code
}
一点背景和分析:您所要求的我听说过称为“达尔循环”,以 Simula 名声的 Ole-Johan Dahl 命名。正如 Sean E. 所说,C++ 没有它们(除了 ima 的答案),尽管其他一些语言有(特别是 Ada)。它可以代替“do-while”和“while-do”循环,这使它成为一个有用的结构。更一般的情况允许任意数量的测试。虽然 C++ 没有 Dahl 循环的特殊语法,但 Sean McCauliff 和 AraK 的答案与它们完全等价。“while (true)”循环应该被编译器变成一个简单的跳转,所以编译后的版本与假设的 Dahl 循环的编译版本完全没有区别。如果你觉得它更具可读性,你也可以使用
do {
...
} while (true);
好吧,我认为您应该将条件移动到循环的中间(?):
while (true)
{
...
// Insert at favorite position
if (condition)
break;
...
}
从技术上讲,是的:
for ( ;CodeBefore, Condition; ) {CodeAfter}
答案是否定的,当 while 语句应该评估的条件为真时,您不能让循环自动终止,直到它在循环的顶部(或底部)实际评估它。while 语句不能放在循环的中间。