无法在C / Objective-C中的for循环中减去

时间:2012-09-27 03:29:48

标签: c for-loop

我正在阅读关于Objective-C的Big Nerd Ranch书,它将带您了解一些早期的C语言。我以前玩过C,并且在PHP方面很有经验。

无论如何,我正在面对挑战,而这个挑战并不像我认为的那样。它非常简单 - 从99开始,循环并减去3直到达到零,每次得到一个可被5整除的数字“找到一个”。非常直截了当。但是,在for循环中减去3不起作用

#include <stdio.h>

int main (int argc, const char * argv[])
{

    int i;
    for(i = 99; i > 0; i-3){
        printf("%d\n", i);
        if(i % 5 == 0) {
            printf("Found one!\n");
        }
    }
    return 0;
}

它在99处创建无限循环,我不知道为什么。

6 个答案:

答案 0 :(得分:4)

i-3不会修改变量i。做类似的事情 -

 for( i=99; i>0; )
 {
      // ....
     i -= 3;
 }

答案 1 :(得分:2)

应该是i-=3而不是i-3

#include <stdio.h>

int main (int argc, const char * argv[])
{

    int i;
    for(i = 99; i > 0; i-=3){
        printf("%d\n", i);
        if(i % 5 == 0) {
            printf("Found one!\n");
        }
    }
    return 0;
}

i-3不会更改i的值。

i-=3

答案 2 :(得分:1)

您的循环语句不会修改i的值。仅仅i - 3不会更改 i,它只会返回i - 3的值。

使用:for(i = 99; i > 0; i = i - 3)

答案 3 :(得分:1)

在for循环中,它应该是i=i-3

答案 4 :(得分:1)

您只是从3中减去i,但您没有将其分配给i。 使用i = i - 3代替i - 3

更改您的for语句:

for(i = 99; i > 0; i = i - 3) {
  // Write your code here.
}

答案 5 :(得分:0)

For循环中的Last Term是递减操作的增量。虽然i-3没有。如果您希望i的值减少3,那么您应该将该值存储在i本身。

为此,请执行以下代码:i = i-3或速记i-=3