For和While循环:差异,问题和原因

时间:2010-09-25 08:16:39

标签: loops for-loop while-loop

我试图找出一些问题的答案,以及C ++中的While和For循环之间的一些区别以及原因?这是我到目前为止所提出的。根据{{​​3}}

虽然是: 而(表达)陈述

和For是: for(initialization; condition; increase)statement;

所以在for循环中,初始化是我们声明要在条件语句中使用的变量的权利吗?

条件是在什么条件下,它会循环。

然后增加是我们决定向变量添加或减去多少的地方。

在while循环中,表达式也是一个条件吗?或者在这种情况下,它们是完全不同的术语吗?

我注意到使用for循环我可以将增加部分移动到语句中,如果我想,但我不能在While循环中增加括号或在括号中声明一个变量(该初始化的东西在一个for loop)。我有点好奇是什么原因?

无论如何,我有点在google的帮助下教自己,以及人们的建议,我对编程几乎是全新的,所以请放轻松对我,我不及时与Jargon或复杂的答案。 :)如果您需要更多信息或其他任何信息,请告诉我。

3 个答案:

答案 0 :(得分:6)

for循环比真正的语言构造更方便。例如,for循环可以轻松扩展为while循环。

for ( c=0; c<10; c++ ) 相当于

c=0;
while ( c<10 ) {
  // some statements
  c++;
}

此外,for循环不仅限于简单的数值运算,你可以做更复杂的事情(C语法):

// a very basic linked list node
struct node {
  struct node *next;
};
struct node; //declare our node

// iterate over all nodes from 'start' node (not declared in this sample)
for ( node=start; node; node=node->next ) {}

将迭代一个简单的链表。

您还可以使用多个初始值设定项,条件和语句(取决于语言): for ( c=0, d=5; c<10, d<20; c++, d++ )。但我建议不要像这样疯狂的循环,因为它们变得相当混乱。

答案 1 :(得分:0)

for循环中,初始化可以声明变量或为它们赋值,或者两者都有。

根据您的编译器,这些变量的范围会有所不同。例如,VC ++ 6.0会将变量的范围扩展到循环之外,并且绕过它的常用方法是可怕的:

#define for if(0){} else for

实际上,for语法是:

for(初始化;循环条件expr;循环时要运行的语句)

所有这些都可以留空。

答案 2 :(得分:0)

通常,for语句用于counter-controlled repetitionsentinel-controlled repetition和while语句。

•大多数for statements可以使用等效while statements表示,如下所示:

参考文献:Java™ How To Program (Early Objects), Tenth Edition