标准的do-while实现了以下逻辑:
do_something();
while(loop_condition) {
do_something();
}
是否存在共同(即存在于C或Java或其他常用语言中)构造以实现以下内容?
while(loop_condition) {
do_something();
}
do_something();
假设我需要逐行读取文件,并且每当我点击以\t
或EOF
开头的每一行时都会执行某些操作。在不将循环内容卸载到函数的情况下,是否有一种不易出错的方法?
答案 0 :(得分:4)
以下内容如何:
loop_again = true;
while (loop_again) {
loop_again = loop_condition;
do_something();
}
或者,或者:
do {
loop_again = loop_condition;
do_something();
} while (loop_again);
答案 1 :(得分:3)
我想你可以这样写:
bool should_keep_going = true;
while (should_keep_going) {
should_keep_going = loop_condition;
do_something();
}
我不确定那是多么清楚。使用一个现实的例子可能会更好,我们可能会以更有意义或更直观的方式命名should_keep_going
。
答案 2 :(得分:0)
假设我需要逐行读取文件,并且每当我点击以\ t或EOF开头的每一行时都会执行某些操作。在不将循环内容卸载到函数的情况下,是否有一种不易出错的方法?
好吧,行可能以非制表符开头,然后在行结束前遇到EOF。我假设你的意思是“最后一行之后的EOF”。
此代码执行您似乎要描述的内容:
while ( 1 )
{
char *ptr = fgets(buf, sizeof buf, fp);
if ( !ptr || ptr[0] == '\t' )
do_something();
if ( !ptr )
break;
}
如果需要,您可以将!ptr
检查转换为循环条件。