嗨,所以基本上我的问题是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语句。我认为没有花括号的循环只执行第一行代码?或者我在这里遗漏了一些东西。
答案 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 循环或函数),因此不需要大括号。