让我们的工作从外面。
for (i = 5; i >= 1; i--)
{
loop-body
}
操作的顺序如下:
- 初始化
i
到5
(i = 5
);
- 如果
i >= 1
为真则转到3,否则转到6;
- 从
i
(i--
)
- 转到2执行
loop-body
- 减法
1
;
- 退出循环。每执行一次循环,
i
推移从5到4,3,2,1,0。当i
到达 -
所以,声明在loop_body
序列被执行5次0
,则条件i >= 1
不再为真,并且循环在该点退出。
打破下来多一点:
for (i = 5; i >= 1; i--)
{
inner-loop
printf("\n");
}
printf("\n")
写一个换行符到标准输出 - 这之后的任何输出将在新的一行被写入。所以现在我们的序列是
- 初始化
i
到5
;
- 如果
i >= 1
为真则转到3,否则转到7;
- 执行
inner-loop
;
- 将一个换行符写入标准输出;
- 减去
1
从i
;
- 转到2;
- 退出循环。
直接跳向终点:
for (i = 5; i >= 1; i--)
{
for (j = 1; j <= i; j++)
{
printf("*");
}
printf("\n");
}
我们的操作顺序是现在:
- 初始化
i
到5
;
- 如果
i >= 1
为真则转到3,否则转到10;
- 初始化
j
至1
;
- 如果
j <= i
为真,则转到5,否则转到8;
- 写一个
*
字符到标准输出;
- Add
1
to j
(j++
);
- 转到4;
- 写一个换行符到标准输出;
- 转到2;
- 退出循环;
连续调用printf("*");
五次导致*****
被写入标准输出。连续调用四次将导致编写****
。如果您在之间的呼叫printf("\n");
,你
*****
****
https://en.wikipedia.org/wiki/For_loop – Jack
变量的作用是存储特定类型的值。 – Olaf
听起来像一个作业问题... –