【问题标题】:Decrement a For Loop?减少一个 For 循环?
【发布时间】:2011-12-22 21:12:48
【问题描述】:

我可以在 xcode 中增加一个 FOR 循环,但由于某种原因,相反的,即递减,不起作用。

当然,这种递增效果很好:

for (int i=0; i<10; ++i) {
    NSLog(@"i =%d", i);
}

但是,这种递减不会产生任何结果:

for (int i=10; i<0; --i) {
    NSLog(@"i =%d", i);
}

我一定是语法错误,但我相信这对于 xcode 中的 Objective C++ 是正确的。

【问题讨论】:

    标签: xcode for-loop decrement


    【解决方案1】:

    我想你的意思是&gt; 而不是&lt;

    for (int i = 10; i > 0; --i) {
    

    如果您希望 i 的值与原始代码中的值相同,但顺序相反(即 9、8、7、...、1、0),那么您还需要更改边界:

    for (int i = 9; i >= 0; --i) {
    

    【讨论】:

    • 请注意,后者适用于 int 这样的签名类型,但对于 size_t 这样的类型会下溢(因此永远不会终止)。相反,请使用for (size_t index = your_size; index--;)
    【解决方案2】:

    我只想补充一点,请记住 --i 首先递减,然后检查,i-- 检查,然后递减。

    【讨论】:

      【解决方案3】:

      你需要条件为 i>0(如果 i 从 10 开始,那么 10

      【讨论】:

        【解决方案4】:

        您正在检查i &lt; 0。这在第一次迭代中是错误的,因此不会执行循环。改为i &gt; 0

        【讨论】:

          【解决方案5】:

          for (int i = 10; --i &gt;= 0;) {

          是在@Mark Byers 答案中表达 for 循环的一种简洁方式。

          【讨论】:

            【解决方案6】:

            将终止条件从i&lt;0更改为i&gt;0

            【讨论】:

            • 哦,这与我在其他古代编程语言中习惯的 FOR 循环逻辑大不相同。我认为条件正在测试我从 10 倒数到 1。这似乎违反直觉,但它确实有效。谢谢一百万。
            猜你喜欢
            • 1970-01-01
            • 2011-10-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-09-30
            • 2011-02-06
            • 2017-07-22
            • 2016-10-13
            相关资源
            最近更新 更多