我已经开始学习C了,但我有一个疑问。例如,假设我有一个这样的循环:
while(*line && flag) {
do something 1 that changes flag;
if(!flag) break;
do something 2 that changes flag;
if(!flag) break;
do something 3 that changes flag;
if(!flag) break;
do something 4 that changes flag;
if(!flag) break;
...and goes on...
}
当然,它只会在所有的do操作完成后才检查条件,所以它只会检查最后一个标志的值。
我想知道是否有任何方法可以检测到"做某事"之后的标志1"停止这样的循环而不需要那么多的休息和假设。只是为了好奇,想学习如何做好事!
非常感谢!!
----编辑----你们中的一些人要求澄清更多!举个例子,我有一个结构体,我想在接收到它的时候把数据插入进去。假设我有姓名,年龄和地址。我只希望按照我创建的一些规则插入它们是否有效。
因此,如果名称无效,我甚至不想使rest或insert有效,我想继续接收下一个结构体的下一个数据。但是如果名字是有效的,我想检查年龄是否有效,等等。
感谢每个试图帮助你的人!
清理此类代码的一种方法可以说是将所有内容颠倒过来。与其用一个标志来表示事情不正常,不如用一个标志来表示事情正常:
bool still_okay = true;
while(*line && still_okay) {
if(still_okay) {
do something 1 that might change still_okay;
}
if(still_okay) {
do something 2 that might change still_okay;
}
if(still_okay) {
do something 3 that might change still_okay;
}
if(still_okay) {
do something 4 that might change still_okay;
}
...and goes on...
}