问题理解C中的块

nas*_*yn8 3 c syntax for-loop

我正在学习用C编程,我正在做一个练习,需要我编写一个程序来打印Isosceles三角形.

#include <stdio.h>

int main()
{
    int col, row;

    for(col = 0; col < 6; col++)
    {
       for(row = 0; row <= col; row++)
       {
          putchar('*');
            putchar('\n');
       }
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码在一行上打印(*)21次.因此,经过几分钟的反复试验后,我删除了内部for循环的内括号.

#include <stdio.h>

int main()
{
    int col, row;

    for(col = 0; col < 6; col++)
    {
       for(row = 0; row <= col; row++)
          putchar('*');
            putchar('\n');
    }
}
Run Code Online (Sandbox Code Playgroud)

我终于实现了我想要的结果.

我的问题是:内部for for循环的内括号{}如何影响结果的打印方式?为什么第一组代码在一行上打印*也是21次?

我仔细查看了整本书,无法找到合理的解决方案来解决为什么内部for循环上的{}影响输出.

Mar*_*iot 7

您的工作解决方案相当于

for(col = 0; col < 6; col++)
{
   for(row = 0; row <= col; row++)
   {
      putchar('*');
   }
   putchar('\n');
}
Run Code Online (Sandbox Code Playgroud)

在C中,缩进与语句分组无关.大括号组声明在一起.在原始的,无法工作的代码中,内部循环后面的大括号使大括号内的所有代码都运行每个循环迭代.在上面的示例中,您可以看到大括号仅包含for循环的每次迭代运行的相应表达式.

正如其他人可能会注意到的那样:缩进并不告诉编译器要做什么,但是你应该缩进以便在视觉上你可以解释你的代码.