我已经在谷歌上搜索了这个,但显然有了For和C这个词,所以会出现很多不相关的搜索。
我刚刚开始阅读C编程语言 - 第二版,但有一节令我感到困惑。 For循环。在大多数其他主要语言中(除了Python)For Loop将在(init; condition; increment)之后用大括号嵌套,但是在这个例子中没有' t:
for (fahr = 0; fahr <= 300; fahr = fahr + 20)
printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32));
这是因为这本书老了,因此语法可能与现在的不同吗?如果没有,有人可以向我解释一下吗?
答案 0 :(得分:3)
你一定很快就读过了。
我相当肯定这本书解释说一个陈述可以是简单的,在这种情况下,它只是由;
终止的单个陈述,或者在这种情况下它是&#39;由{
和}
括起来的语句列表。
for
循环的主体是一个陈述,因此可以是简单的也可以是复合的。
当然,上面的措辞是递归的,这是有意的。这完全有效:
for(fahr = 0; fahr <= 300; fahr += 20)
{
printf("%d", fahr);
{
printf(" %6.1f", (5.0 / 9.0) * (fahr - 32));
{
printf("\n");
}
}
}
编写这个非常简单的循环当然是一种非常恼人和毫无意义的方法,但它说明了只要有声明,就可以有复合语句。如果你想要一个更本地的&#34;这有时候很方便。变量,特别是在该语言的C99之前的版本中。
答案 1 :(得分:0)
默认情况下,下一个语句到for(...)
循环,然后注释将被视为循环体。但是说它很好。如果你想要花括号,那么它必须被视为任何结构的主体。
for(...)
{
// body of the loop
...
}
答案 2 :(得分:0)
当一个语句需要由for
循环执行时,不需要使用大括号。但是,如果for
需要循环多个语句,则需要大括号。
在您的情况下,printf被视为循环的主体,它将被执行,直到for
中的条件变为false。但是包含大括号是一个好习惯,因为它可以提高代码的易读性,并防止将来编辑程序时可能出现的错误。
while
,if
等
答案 3 :(得分:0)
这是基本的C语法,自从时间开始以来一直有效(好吧,从70年代初开始,但是Unix认为是时间的曙光)。 for
循环的主体总是一个声明。语句可以是简单的,如您显示的语句,也可以是花括号中的块语句。所以如果正文包含多个语句,你只需要大括号。我非常确定K&amp; R在某处解释了这一点。
在C,C ++,D,Java和Objective-C中都是如此。 Perl和Go是例外。
但是,我会补充一点,即使他们没有必要也不会受伤,而且我已经采用了这些&#34;无用的&#34;括号作为我编码风格的一部分,以防止像这样的错误if (condition)
do_one_thing();
and_another_thing();
在编辑时会爬进代码。
答案 4 :(得分:0)
在C中,如果构造,控制或选择主体只包含一个语句,则不必将其包含在大括号中
那是
for (fahr = 0; fahr <= 300; fahr = fahr + 20)
printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32));
与
相同for (fahr = 0; fahr <= 300; fahr = fahr + 20)
{
printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32));
}