c语言中for循环的混淆:c语言中的增量逻辑

c语言中for循环的混淆:c语言中的增量逻辑,c,for-loop,increment,post-increment,pre-increment,C,For Loop,Increment,Post Increment,Pre Increment,我对循环增量的C语言的基本概念感到困惑。这是我的代码: #include <stdio.h> #include <stdlib.h> int main() { int j=0;int a; for(j;j<=3;++j) { printf("hello\n"); a=j; } printf("%d,%d\n",j,a); } #包括 #包括 int main() { int j=0;int a

我对循环增量的C语言的基本概念感到困惑。这是我的代码:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int j=0;int a;
    for(j;j<=3;++j)
    {
        printf("hello\n");
        a=j;
    }
    printf("%d,%d\n",j,a);
}
#包括
#包括
int main()
{
int j=0;int a;

对于(j;jTill
jTill
jfor
j=0
a=0

对于
j=1
a=1

对于
j=2
a=2

对于
j=3
a=3


对于
j=4
a=0,循环终止为
j

对于
j=1
a=1

对于
j=2
a=2

对于
j=3
a=3


For
j=4
循环被终止为
j这是由于For循环中3个表达式的执行方式

考虑

for( exp1; exp2; exp3)
{
    body;
}
这将按如下方式执行:

exp1;
if (exp2 == false) goto end_of_loop;
body;
exp3;
if (exp2 == false) goto end_of_loop;
body;
exp3;
if (exp2 == false) goto end_of_loop;
body;
exp3;
if (exp2 == false) goto end_of_loop;
. . . 
. . .

end_of_loop:
如您所见,
exp3
总是在
body
之后执行一次

因此,在您的情况下,
j
将在分配给
a
后递增一次。 比如:

a=j;//身体的一部分
++j、 //exp3

这是由于for循环中3个表达式的执行方式

考虑

for( exp1; exp2; exp3)
{
    body;
}
这将按如下方式执行:

exp1;
if (exp2 == false) goto end_of_loop;
body;
exp3;
if (exp2 == false) goto end_of_loop;
body;
exp3;
if (exp2 == false) goto end_of_loop;
body;
exp3;
if (exp2 == false) goto end_of_loop;
. . . 
. . .

end_of_loop:
如您所见,
exp3
总是在
body
之后执行一次

因此,在您的情况下,
j
将在分配给
a
后递增一次。 比如:

a=j;//身体的一部分
++j、 //exp3

jfor
循环在每次迭代时检查条件。因此,当初始化
j=0
时,给出以下代码循环到
jfor
循环在每次迭代时检查条件。因此,当初始化
j=0
时,给出以下代码循环到的条件<代码>j1:

j=0
j打印hello,a=0,++j
第二:

j=1
j打印hello,a=1,++j
第三:

j=2
j打印hello和a=2,++j
第四:

j=3
j打印hello和a=3,++j
第五:

j=4不满足j1:

j=0
j打印hello,a=0,++j
第二:

j=1
j打印hello,a=1,++j
第三:

j=2
j打印hello和a=2,++j
第四:

j=3
j打印hello和a=3,++j
第五:


j=4不满足j当我们在循环概念中使用前缀递增时,我们应该小心一点

j=0a=0的
第1次迭代

j=1 a=1的
#第二次迭代

j=2 a=2的
#第三次迭代

j=3 a=3的
#第四次迭代


对于
j=4
,当条件不满足时,控制从For循环中出来。但是
j
值提前递增,因此它输出
“4”
,当我们在循环概念中使用前缀递增时,我们应该谨慎一点

j=0a=0的
第1次迭代

j=1 a=1的
#第二次迭代

j=2 a=2的
#第三次迭代

j=3 a=3的
#第四次迭代


对于
j=4
,当条件不满足时,控制从For循环中出来。但是
j
值提前递增,因此它输出
“4”

,因为
j
在分配给
a
后递增。(我也不会在
循环控制的
第一部分中为
j
。它什么也不做。我会为(j=0;j感谢@JonathanLeffler!现在我的困惑被消除了。:)因为
j
在分配给
a
后会递增。(我也不会在
循环控制的
第一节中为
j
。它什么也不做。我会为(j=0;j感谢@JonathanLeffler!现在我的困惑已经消除了。)
 j = 1
 j <= 3 => print hello and a = 1, ++j
 j = 2
 j <= 3 => print hello and a = 2, ++j
 j = 3
 j <= 3 => print hello and a = 3, ++j
 j = 4 not satisfy j <= 3