[英]How do nested for loops work in c#
我不确定如何编译此代码(仅使用Visual Studio代码即可)
int i,j;
for(i=0; i<=6; i++) {
for (j=1; j<=7-i; j++) {
Console.Write("*");
}
Console.Write("\n");
}
is written. But then from here I do not understand what happens or why it happens. Does the compiler then run or... 我的问题是,当代码开始被编译时,首先测试for循环 ,它将是true,然后测试嵌套的for循环 ,它将是true,因此编写了 。但是从这里我不知道会发生什么或为什么发生。编译器然后运行或...
如果您不了解for循环,则可以随时将其简化为更简单的语句:
for ( init ; condition; increment )
body;
只是一种较短的写作方式
init;
while (condition)
{
body;
increment;
}
所以你的循环
for(i=0; i<=6; i++) {
for (j=1; j<=7-i; j++) {
Console.Write("*");
}
Console.Write("\n");
}
只是一种简短的写作方式
i = 0;
while (i <= 6)
{
j = 1;
while (j <= 7 - i)
{
Console.Write("*");
j++;
}
Console.Write("\n");
i++;
}
这更清楚吗?
如果仍然不清楚,您可以进一步降低它。
while(condition)
body
只是写的短途
START:
if (!condition)
goto END;
body;
goto START;
END:
所以你的循环就是:
i = 0;
START_1:
if (!(i <= 6))
goto END_1;
j = 1;
START_2:
if (!(j <= 7 - i))
goto END_2;
Console.Write("*");
j++;
goto START_2;
END_2:
Console.Write("\n");
i++;
goto START_1;
END_1:
现在清楚了吗?
变量会像这样变化。
i = 0 : j changes from 0 to 7 ( 7- i, but i = 0)
i = 1 : j changes from 0 to 6 (7 - i, i = 1)
.
.
.
.
i = 6: j changes from 1 to 1 (7 - i, i = 6)
在每个i循环中,您正在打印j循环和换行符。
|j-loop|i-loop|
|******|'\n' |
因此,您将获得输出,
*******
******
*****
****
***
**
*
我不会仅向您显示输出,因为您的问题不是输出是什么,而是for
循环的工作方式。
让我们一步一步地做。 这是一些伪代码:
for ( init; condition; increment )
{
Console.Write("*");
}
init
并且在遇到循环时仅执行一次。 对于for
循环,这只对一次。 condition
被评估。 如果为真,则执行主体。 因此, Console.Write("*");
被执行。 increment
。 condition
。 如果为真,则执行主体。 因此, Console.Write("*");
被执行。 完成步骤3和4,直到condition
为假。 一旦为假,则循环退出,并执行以下代码行。
在您的问题中,您有一个循环,如果条件为真,它将开始另一个循环。 该循环从1开始,如果i
为0,则从7中减去它,7-0为7,由于j
为0且小于7,它将执行主体并打印*。 它继续执行步骤3和4,并打印*七次。 然后条件为假,因此它跳到内循环之外并打印新行。
然后对外部循环执行步骤3和4。
它一直这样做,直到外部循环中的条件评估为false为止。
i: 0
, j: 1 to 7
打印*
,然后打印\\n
i: 1
, j: 1 to 6
打印*
,然后打印\\n
,依此类推
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.