【发布时间】: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