0

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

无论如何,我正在接受挑战,而这个挑战并没有按照我认为的方式工作。这很简单——从 99 开始,循环并减去 3 直到为零,每次得到一个可被 5 整除的数字时,打印“找到一个”。很简单。但是,在 for 循环中减去三是行不通的

#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 处创建无限循环,我不知道为什么。

4

6 回答 6

4

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

 for( i=99; i>0; )
 {
      // ....
     i -= 3;
 }
于 2012-09-27T03:32:19.217 回答
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做。

于 2012-09-27T03:33:35.117 回答
1

您的循环语句不会修改i. 只是做i - 3不会改变 i,它只是返回的值i - 3

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

于 2012-09-27T03:33:44.113 回答
1

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

于 2012-09-27T03:35:07.077 回答
1

您只是从 中减去3i但没有将其分配给i。使用i = i - 3而不仅仅是i - 3.

像这样更改您的 for 语句:

for(i = 99; i > 0; i = i - 3) {
  // Write your code here.
}
于 2012-09-27T05:26:20.457 回答
0

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

为此,应编写以下代码:i = i-3或简写i-=3

于 2012-09-27T04:21:28.673 回答