【问题标题】:For loop in C and how it works?C中的for循环及其工作原理?
【发布时间】:2016-11-17 03:28:35
【问题描述】:
#include <stdio.h>

int main() {

    int i, j;

    for (i = 2; i < 20; i++) {
        for (j = 2; j <= (i/j); j++) {
            if (!(i%j)) break;
        }
        if (j > (i/j)) printf("%d\n", i);
    }

    return 0;
}

我是 C 语言的初学者,并试图了解 for 循环的工作原理。我的问题是在第 4 次迭代时,嵌套循环中的条件将返回 TRUE

(j < (i/j))    // 2 <= 4/2

第一个if 语句也将返回TRUE,因为NOT 运算符

(!(i%j));    // 4/2 = !(0)

所以现在j = 3 的值是递增的,但是为什么第二个if 语句没有打印输出,如果它是TRUE

(j > (i/j));    // 3 > 4/3

【问题讨论】:

  • My question is at the 4TH loop那在哪里?
  • 想象一下循环现在是第 4 个循环。
  • 你的意思是迭代吗?
  • 对不起。不知道gow会说好英语。
  • 了解如何使用调试器并在代码运行时单步执行代码以查看其具体功能。即授权自己回答这个级别的问题。

标签: c loops for-loop conditional-statements


【解决方案1】:

你在 j 递增之前跳出循环,所以 j 仍然是 2,而不是 3

【讨论】:

    【解决方案2】:

    break 语句提前结束其最近的封闭循环。它之后的所有内容(包括for 循环的第三条语句)都不会发生。

    所以j 在检查打印条件时仍然为 2,就像 Mark 已回答。

    【讨论】:

    • 大约在第 9 次迭代时,第二个 if 语句如何返回 TRUE?谢谢。
    • @DisplayName 你的意思是i9,还是10? (因为你是从2 开始的,所以不清楚第九次迭代是什么)
    • @DisplayName,运行您的代码不会打印 910 ideone.com/OmXHvp 它只打印素数。
    猜你喜欢
    • 2011-06-15
    • 1970-01-01
    • 2021-07-07
    • 2019-10-21
    • 2012-03-23
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多