首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在for循环中带有逻辑运算符的条件。

在for循环中带有逻辑运算符的条件。
EN

Stack Overflow用户
提问于 2014-12-13 17:39:38
回答 2查看 90关注 0票数 2

我用C编写了程序,用Eratosthene的筛子寻找素数(这是Kochan的6-8练习,C第4版的编程)。工作挺好的。

代码语言:javascript
复制
#include <stdio.h>

int main(void) {
    int prime[151], i, j;

    for(i = 2; i < 151; ++i)
        prime[i] = i;
    for(i = 2; i <= 150; ++i) 
        if(prime[i])
            for(j = i+i; j <= 150; j += i)
                prime[j] = 0;
    for(i = 2; i < 150; ++i)
        if(prime[i])
            printf("%i ", prime[i]);
    printf("\n");
    return 0;
}

但是在我到达这种形式的代码之前,我尝试一下for循环:

代码语言:javascript
复制
for(i = 2; prime[i] && i < 150; ++i)

这种形式逐点保存,if语句,在我看来,需要以类似于第一个变量的方式工作。但在3号之后就停止了!有人能解释一下为什么for循环中的条件是这样工作的吗?

是的,我知道这个程序的算法不是最好的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-13 17:41:08

不,它们不一样:

  • 原始循环跳过所有非素数并继续进行。
  • 建议的替换一旦遇到第一个非素数就会终止(因为prime[i]将成为false,循环将停止)。
票数 2
EN

Stack Overflow用户

发布于 2014-12-13 17:51:03

for循环的中间部分类似于while,而不是if。因此,一旦找到prime[i]0的位置并进行索引,循环就会终止。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27461747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档