C语言中的while循环,带有未执行的条件

3

我在我的C代码中不断遇到以下模式:

_Bool executed = 0;
while (condition) {
   executed = 1;
   ...
}
if (!executed) {
   ...
}

你有更好的构建方法吗?

理想情况下:

while (condition) {
   executed = 1;
   ...
} else {
   ...
}

(一个 while/else 循环,但不具有 Python 的语义。只有在 while 条件立即为 false 时,else 才会执行。)

2
为什么要改变呢?它的逻辑运行良好,外观也很不错啊。 - Tony
1
你把whileif混淆了。 - Barmar
1
@TonyTannous 我的意思是你只能在 if 语句中使用 else,而不能在 while 循环中使用。 - Barmar
@Barmar 哦,现在我明白你的意思了 :) - Tony
给楼主:请在你的示例中更具体一些,“...”不是实际的代码。根据循环体,可以使用不同的模式(包括break/continue/return/goto)。 - wildplasser
显示剩余7条评论
1个回答

4

看起来

_Bool executed = 0;
while (condition) {
   executed = 1;
   ...
}
if (!executed) {
   ...
}

如果condition具有副作用,可以使用以下方式进行更改:
if (condition) {
    do 
    {

    } while(condition);
} else {

}

但如果你坚持只使用while而不是do... while,那么你的惩罚就是再次评估condition

if (condition) {
    while(condition)
    {

    }
} else {

}

我不理解他们。这正是 OP 寻找的。我已经给出了相同的答案。+1 - RobertS supports Monica Cellio
@RobertS支持MonicaCellio,你明白是谁和什么吗? - Tony
你的第一次修改更好。可惜需要重复条件。 - fadedbee
@fadedbee 给 OP 添加了一条注释。 - Tony
1
@TonyTannous :-) - RobertS supports Monica Cellio
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接