【问题标题】:While loop in C, with non-executed conditionC中的while循环,具有非执行条件
【发布时间】:2020-05-22 09:30:01
【问题描述】:

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

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

有没有更好的方法来构建它?

理想情况下:

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

while/else 循环,但不符合 Python 的语义。else 应仅在 while 条件立即为假时执行。)

【问题讨论】:

  • 为什么要改变?它正在工作并且看起来很好的逻辑......
  • 您将whileif 混淆了。
  • @Barmar 不,他不是。代码可能会在此期间发生变化。如果他只想在 0 while 循环迭代发生时执行下一个块。
  • @TonyTannous 我的意思是else 只能和if 一起使用,你不能和while 一起使用。
  • @Barmar 啊现在我明白你的意思了:)

标签: c while-loop


【解决方案1】:

好像

_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 {

}

【讨论】:

  • @Fredrik 在你看来也许。对我来说,当condition 立即 false 时触发 else 是很明确的。我不用去追踪executed的逻辑
  • 我不明白他们。这正是 OP 正在寻找的。我给出了同样的答案。 +1
  • @RobertSsupportsMonicaCellio 了解谁和什么 :) ?
  • @TonyTannous 那些看不到这个问题答案的人。也许它可能有一些问题,因为它不是针对特定情况的。但是从一般的角度来看,这就是 OP 所要寻找的。​​span>
  • @TonyTannous :-)
猜你喜欢
  • 2011-01-09
  • 2017-12-14
  • 2013-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-04
相关资源
最近更新 更多