没有花括号的for循环有什么作用?

时间:2014-10-09 23:25:14

标签: c for-loop

嗨,所以基本上我的问题是for循环没有任何花括号吗?所以据我所知,在if语句中只执行代码的第一行。所以在for循环中它是如何工作的?我没有真正理解没有括号和大括号的循环的概念。我想用一段代码解释会有所帮助。顺便说一句,这是在C语言中。这是我一直在考虑的代码。

int main(int argc, char* argv[])
{
  int i;
  int count = 0;
  for (i = 0; i < 5; i++)
    count++;
    printf("The value of count is: %d\n", count);

  return 0;
}

在这种情况下,我看到没有花括号,所以我假设它将继续迭代第一个语句,直到i&lt; 5,一旦我不小于5,它什么都不做,但是当我测试代码时,我得到它也最终打印出printf语句。我认为没有花括号的循环只执行第一行代码?或者我在这里遗漏了一些东西。

4 个答案:

答案 0 :(得分:6)

如果没有花括号,只有循环定义后面的第一个语句才被认为属于循环体。

请注意,在您的示例中,printf仅被调用一次。虽然它的缩进与前一行匹配,但这是一个红色的鲱鱼--C并不关心。它对我说的是,编写代码的人可能忘记了大括号,并且打算 printf语句成为循环体的一部分。

我唯一一次省略大括号就是写一行if语句:

if (condition) statement;
do_something_else();

这里,没有缩进来引入关于第二行上的语句是否实际上应该属于if的主体的含糊不清。在阅读本文时,您可能会更有信心它按预期工作。

答案 1 :(得分:2)

如果for循环没有大括号,它将执行下一个语句。 语法基本上是

for (<initialization>;<condition>;<increment>) <statement>;

“陈述”部分可以是任何东西。它可能是一个简单的计数++;或者它可能是一个'if'/'if-else'语句,它甚至可能是没有大括号的另一个for循环!

所以在这种情况下,代码类似于:

for (i = 0; i < 5; i++) {
    count++;
}
printf("The value of count is: %d\n", count);

答案 2 :(得分:0)

这取决于 for 循环,例如,这个循环执行一些“没有花括号”的事情,打印(2 次)i(从 1 到 10)

#include <stdio.h>

int
 main(){
    for(int i=0; i<10;i++,printf("%d ",i),printf("%d\n",i));
 return 0;
}

对于唯一的循环:

for(int i=0; i<10;i++,printf("%d ",i),printf("%d\n",i));

(我做了 2 次以表明 ²nd 也被执行了)

虽然有点晚了;希望对以后的人有所帮助。

输出:

1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10

答案 3 :(得分:0)

我想补充一点,我遇到了一些滥用它来执行嵌套 for 循环的代码。

for(int i=0; i<10; i++)
for(int j=0; j<10; j++)
for(int k=0; k<10; k++)
  doSomething(i, j, k);

在这种情况下,每个 for 循环后面只有一个语句(以下 for 循环或函数),因此不需要大括号。