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

嗨所以基本上我的问题是什么做一个没有任何花括号围绕它的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; } 

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

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

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

我唯一一次省略花括号是在写一行if语句时:

 if (condition) statement; do_something_else(); 

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

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

 for (;;) ; 

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

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

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