c - 为什么第二个循环没有初始化?为什么它打印五颗星?

标签 c for-loop

这个程序产生这个输出:

*******
 *****
  ***
   *

代码如下:

#include  <stdio.h>
int main(void)
{
 int i, j;
 for (i = 1; i <= 5; i++)
 {
  for (j = 1; j < i;j++)
   printf(" ");
  for (; j <= 8 - i;j++)
   printf("*");
  printf("\n");
 }
 return 0;
}

for (; j <= 8 - i;j++) 是什么意思? ?没有初始化步骤,也不明白为什么第二行只有五个*。

最佳答案

For 循环实际上不需要有初始化语句。许多循环选择包含一个,但这并不是绝对必要的。因此,您可以认为该循环是在说“我们不需要在这里为初始化做任何特殊的事情。”

至于第二行为什么有五颗星,我们看这部分代码:

for (j = 1; j < i;j++)
 printf(" ");
for (; j <= 8 - i;j++)
 printf("*");

在第二次迭代中,i等于2。当第一个循环运行时,它会打印出一个空格字符。当 j < i 时循环停止运行不再为真,所以当它完成运行时,j 的值将为 2。因此,第二个循环将为 j = 运行2、3、4、5、6,停止时 j = 7 .这就是您看到五颗星的原因。

希望这对您有所帮助!

关于c - 为什么第二个循环没有初始化?为什么它打印五颗星?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31728980/

相关文章:

c - 如何使用 printf 检查 void 函数是否成功运行?

r - 如何自动将列转换为 R 中的对象?

javascript - 将 for 循环的索引传递给不同的函数

c - 使用过多内存的运行时错误?

c - 合并排序不起作用

c++ - 如何停止嵌套的 for 循环

matlab - 是否可以避免在元胞数组上迭代时出现 "s{1} annoyance"?

c++ - 如何更好地理解嵌套循环?

C程序计算长方形的面积

更改控制终端