Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 为什么编程语言中有两个循环?_Loops_For Loop_Programming Languages_While Loop - Fatal编程技术网

Loops 为什么编程语言中有两个循环?

Loops 为什么编程语言中有两个循环?,loops,for-loop,programming-languages,while-loop,Loops,For Loop,Programming Languages,While Loop,自从我开始学习编程以来,在我所学的每种语言中,总是有while循环和for循环 Aswhile可以做for循环可以做的所有事情。两者都执行相同的功能进行迭代。那么为循环添加的目的是什么 使用它们是否有性能差异?为什么在每种语言中都有两个循环?我假设您讨论的是典型的for循环,例如C/C++ 虽然for循环总是可以重写为while循环,但它有一个很大的可读性优势:所有与循环相关的属性 初始化 测试 后循环操作(通常是增加或遍历) 可以在一行中捕获。如果您有一个较长的主体,带有while循环,那

自从我开始学习编程以来,在我所学的每种语言中,总是有
while
循环和
for
循环

As
while
可以做
for
循环可以做的所有事情。两者都执行相同的功能进行迭代。那么为循环添加
的目的是什么


使用它们是否有性能差异?为什么在每种语言中都有两个循环?

我假设您讨论的是典型的
for
循环,例如C/C++

虽然
for
循环总是可以重写为
while
循环,但它有一个很大的可读性优势:所有与循环相关的属性

  • 初始化
  • 测试
  • 后循环操作(通常是增加或遍历)
可以在一行中捕获。如果您有一个较长的主体,带有
while
循环,那么整个过程可能不适合您的屏幕大小,或者即使它适合您,您也必须直观地解析代码以查看发生了什么


本质上,如果适用,
for
循环可以更好地捕获代码的意图。

唯一的区别在于代码的可读性,编译时,
for
循环在
中转换,而
循环具有先前的初始化和随后的增量。

for
循环在我们知道终止条件时使用


而当我们不知道终止条件时,通常使用循环,或者更好地说,当我们不关心终止条件将是什么时,我们可以说……从性能角度来看,两者都是相同的,因为它是使循环成为“循环”的条件,在这两种情况下,条件都是由用户提供的(这不是循环构造到机器代码的转换的一部分)我怀疑它们以不同的风格存在,更多的是作为一种文档工具。但是for循环允许您声明仅在循环期间存在的局部变量:

for (Iterator it = c.begin(); it != c.end(); ++it) {
} // it destroyed here

Ofc你可以不使用所有循环;goto是足够的

为什么不?为什么不给程序员不同的方法做事情?我不是说不给他们选择。但是给他们两个选择有什么意义吗?如果有不同的方法做事情,那就意味着没有人想出“唯一正确的方法”我认为这是一个很好的问题,为什么没有一个正确的方法?当然,这不是堆栈溢出的合适问题。从:“你应该只根据你实际遇到的问题来问实际的、可回答的问题。”我认为,只有在这里我才能得到正确的答案。另外,在C++、C语言中,(还有java)?
for
循环可以包含在
for
的初始化部分中声明的变量的整个范围。这是
while
循环不可能实现的。@James通过
{initialization;while(condition){…;step;}
可以实现的。但是可读性更低(并且浪费缩进).嗯,大多数事情都是可能的。对于给定的“可能”值,你可以同样地说所有的数学运算符都是多余的,因为你可以用nand运算符做任何事情。@James是的,但在这种情况下,“可能”的定义并不是非常狡猾和不切实际的它非常简单,每次都能记住并输入,性能和语义都是一样的,只是不方便。