for循环和while循环之间的真正区别是什么?

时间:2018-11-28 11:02:26

标签: javascript java c++

for循环和while循环有什么区别?

我不是在询问语法,也不是在循环是退出控制循环的情况下如何工作或循环。

我需要知道的是,必须有一个创建for循环和while循环的原因,如果完成的过程相同,那么就不需要另一个了,我正在寻找这个原因

并且不包括do while,我所说的是while,尽管do while是一段时间的一部分。

3 个答案:

答案 0 :(得分:1)

for只是语法糖了一段时间,如果不是说两者都可以使用goto语句以及许多其他语言构造来实现。

历史原因是使程序代码看起来更易于阅读。

答案 1 :(得分:0)

专门针对C ++语言:

基本上是这样:

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

可以这样写,这是严格等效的,但可读性可能较低:

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

但是可以在for语句中声明循环控制变量,该语句给出了非常紧凑的代码:

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

但是对于while来说,如果循环变量的范围仅限于循环本身,则不能具有等效的功能:

可能是这样的,这是非法的C ++:

while (int i < 10)
{
   printf("%d\n", i);
   i++;
}

您可以改写为:

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

但是正如您所看到的那样,它很麻烦并且不易读。

顺便说一句,您可以像这样写同样的for循环,这真的很丑:

  int i = 0;    
startfor:
  if (!(i < 10)) goto endfor;
    printf("%d\n", i);
    i++;
  goto startfor;
endfor:
  ;

答案 2 :(得分:0)

    当您有某种计数器变量需要在每次循环迭代中增加/减少时,应使用
  1. For循环。如果您在这种要求中使用while循环,则将使用额外的一行代码来增加/减少计数器。
  2. 当您有一些条件语句时应使用while循环,并应继续执行该条件,直到该条件为真为止,一旦条件变为false,循环将终止。
  3. while循环可以替代for循环,但是for循环不能替代while循环