C# 一个不寻常的for循环语句

C# 一个不寻常的for循环语句,c#,c,loops,C#,C,Loops,在C和C中,此代码段: int ii; for(ii=1;ii<5;ii++); printf("ii = %d",ii); 打印出ii=6 你能解释一下这是怎么回事吗?为什么for循环以分号结尾?for循环的主体是空的: int ii; for(ii=1;ii<5;ii++); // ↑ body of the for loop printf("ii = %d",ii); 从0迭代到4,每次迭代都不执行任何操作。这是一个空语句,它是分号 这是有意

在C和C中,此代码段:

int ii;
for(ii=1;ii<5;ii++);
printf("ii = %d",ii);
打印出ii=6

你能解释一下这是怎么回事吗?为什么for循环以分号结尾?

for循环的主体是空的:

int ii;
for(ii=1;ii<5;ii++);
//                 ↑ body of the for loop
printf("ii = %d",ii);
从0迭代到4,每次迭代都不执行任何操作。这是一个空语句,它是分号

这是有意义的,例如:

for (i = 0; i < 5; printf ("%d", i++) );

由于for循环的结尾包含一个空语句分号,因此ii的值是导致循环退出的值。因此,当ii记住,循环声明的增量部分发生在循环的末尾,因此输出与预期一样-在第一个示例中,循环在ii变为5后停止。循环体为空,在ii为0到4时执行


第二个循环的空体从0到5执行六次,当ii变为6时停止。

删除for后面的分号,当表示不带{}的for循环时,它将在语句后面的循环中执行代码,直到找到一个;在您的例子中,for循环没有找到要执行的语句。删除for和下一行代码后的分号,将执行print语句。

对于代码,获得输出6是正确的。以下是流程: 您的“ii”分别增加到5和6,以进行第一个和第二个循环。因为您正在循环for循环,而不需要执行主体


forii=1;它真的是i++还是ii++?你能解释一下你的意思吗:for循环永远不会以分号结束这是一个无效的语句;这是完全正确的。对于也是有效的。我会试试thanxx bro
int ii;
for(ii=1;ii<5;ii++) {
    printf("ii = %d",ii);
}
for (i = 0; i < 5; i++);
for (i = 0; i < 5; printf ("%d", i++) );