【问题标题】:Change for loop condition statements based on another condition in c根据 c 中的另一个条件更改循环条件语句
【发布时间】:2015-11-09 01:11:54
【问题描述】:

我想根据另一个条件在 for 循环条件中创建语句。例如。给定两个数字 a 和 b,如果 a>b 我想输入 i-- 的条件,否则为 i++。这可以通过 if 中的两个 for 语句来完成,但我只想用一个 for 循环来完成。

类似的东西..

for(i=a; if(a>b),put i>=b here else put i<=b; if(a>b) put i-- here else i++)
{
     some code...
}

我试过这个:

for( i = a; ( a > b ? i >= b : i <= b ); ( a > b ? i-- : i++ ) )
{
   ...
}

但它没有奏效。 我能得到一些帮助吗?

更新:这不适用于某些在线编译器。相同的代码在本地机器上运行良好。解决了。​​

【问题讨论】:

  • ab 在 for 循环中更改了吗?
  • 你的代码看起来不错 - 你试过了吗?
  • 我正在尝试使用一个在线编译器,但它无法正常工作。我在本地代码块中尝试过,它的工作原理。不知道为什么会这样。谢谢@artm
  • @jigar 它按预期工作,但我不明白你遇到的问题。

标签: c for-loop conditional-statements


【解决方案1】:

也许您可以使用诸如

之类的条件
i += (a > b) ? 1 : -1

或者

i += (a > b)-2*(a <b)

利用 a> b 的真值整数等于 1 或 0。

或者您可以重写循环,具体取决于您要实现的目标:

aa = a < b ? a  : b;
bb = a < b ? b  : a;
for (i = aa; i < bb; i ++)

if (a < b) {
    for (i = a; i < b
 else 
    for (i = a; i > b; i--

如果循环中的代码不是很复杂,您可以复制它,如果是,则将其包装在一个函数中并从两个循环中调用它不会损失太多性能。您将获得代码的可理解性和可维护性。

【讨论】:

  • 这是新的方式。但它会增加 for 循环的数量。我只想使用一个 for 循环。不过谢谢。这对以后的编码很有用。
  • 但是为什么你想要一个循环呢?该条件必须在每个循环中进行评估,因此单个外部 if 和更简单的条件实际上可能会带来更好的性能。
  • 是的,同意。但在我的最后,挑战是用最少的字符制作一个程序:)。因此,额外的 for 循环会以这种方式花费很多。但同意你的上述结论。
【解决方案2】:

这不适用于某些在线编译器。我试图在本地机器的代码块中使用它。它按预期工作。我不知道为什么它不适用于在线编译器。

【讨论】:

    【解决方案3】:

    我认为只有一个不好的条件:

    for(i=a;(a<b?i<=b:i>=b);(a>b?i--:i++))
    {
       ...
    }
    

    代码中的a&gt;b 应该是a&lt;b

    【讨论】:

    • 我在发布和编辑时意识到......谢谢,但它不起作用。
    猜你喜欢
    • 2019-03-25
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多