【问题标题】:limit to number of conditions in a while loop?限制while循环中的条件数?
【发布时间】:2012-11-10 17:56:37
【问题描述】:

我想使用带有许多条件的 while 循环,例如 30 多个条件,我的问题是,我可以在 while 循环中放入多少个条件,或者就此而言,if 语句或任何其他条件是否有限制?

【问题讨论】:

  • 当您组合所有单个条件时,您最终会得到一个表达式。我不推荐它,因为取决于子表达式,计算这个巨型条件的时间可能比实际循环体中的时间更多。
  • 这对任何 C++ 编译器来说都不是问题。请注意,C++03 标准要求编译器在完整表达式中支持至少 256 级嵌套括号表达式(并不是说它真的直接与您的问题有很大关系——除了在我看来这可能是一个表达式比你的复杂得多)。我有点好奇你心中的表达方式。

标签: c++ loops while-loop conditional


【解决方案1】:

从技术上讲,只能有一个条件。不过这样就够了,with and/ors,可以将多个条件组合成你想要的任何东西,而且没有任何限制。

if (0==a || 56==a) //Technically only one condition

这可能会让人感到困惑,但是,如果有大量的条件,您可能希望将其中的一些分成更小的组,如果可以的话,以使您的代码更具可读性。

【讨论】:

  • 好的,是的,我的意思是'代码' if(this || that || that || this || another_thing || and_another)
  • 56=a?您使用了 Yoda 条件句,这通常被认为不好,但 仍然 把它搞砸了。
  • 哎呀。这就是为什么我尝试将数字放在第一位的原因,以确保如果我犯了这样的错字,我会得到一个编译时错误......
  • @DeadMG:这不是 Yoda 的重点吗?如果你从不把它搞砸,那就尽可能用明智的方式写出来。
【解决方案2】:

我建议这样编写代码:

while (check_if_30_expressions_say_go(input,input2,input3) {
    do_whatevery_you_need_to_do();
}

这也有望让您进一步将 30 个表达式的检查重构为更合理的内容。

编辑我现在发现我并没有真正回答这个问题,所以记录一下:

您可以将任意数量的条件嵌套到 while 循环中,但我建议对于不止几个简单的表达式,您最好将它们重构为一个或多个函数甚至对象。

【讨论】:

  • 您确实回答了这个问题。谢谢你。我投了赞成票。编辑:我不知道我可以将函数放入条件中。这些是他们在课堂上没有教给我们的东西。我想我应该自己想到这一点,但是这很有意义。
【解决方案3】:

没有技术限制。将鼠标悬停在你试图理解你的代码的时候,你的队友很可能会诅咒你。

最好的方法是将条件拆分为逻辑组,并将它们包装到具有不言自明名称的函数中。

【讨论】:

  • 谢谢,这很有意义。这是我想我要使用的解决方案。虽然代码只会被我看到,但这会让事情更合乎逻辑。
猜你喜欢
  • 2016-12-21
  • 2021-10-22
  • 2015-02-27
  • 2014-03-29
  • 2017-08-26
  • 1970-01-01
  • 2023-03-05
  • 2015-09-29
  • 2012-12-19
相关资源
最近更新 更多