我对编程很陌生。我已经了解了循环一段时间(大约 1 个月哈哈)。我已经做了很多练习,到目前为止,我主要使用 for 循环。我认为它们是相同的,因为最终,您可以使用任何循环实现相同的结果。任何人都可以启发我吗?什么时候应该使用 for 循环,什么时候应该使用 while 循环。哪个更容易陷入无限循环?谢谢
4 回答
for
循环和while
循环在下面生成几乎完全相同的代码。
使用 a 背后的想法for
是当您需要某种索引或迭代器时。Awhile
通常用于检查简单的布尔条件。
更具体地说,如果您尝试遍历集合(数组、列表等),请使用for
. 如果您要检查某物的状态何时发生变化,请使用while
.
每当您的循环需要更改状态变量来表达条件时,请使用for
-loop。该语法允许声明循环本地的变量并在每次迭代后显式操作它。
for (unsigned i = k; i < 100; ++i) {
...
}
比同等水平的要清晰得多
{
unsigned i = k;
if (i < 100) do {
...
if (i < 100) ++i;
else break;
} while(1);
}
最基本的循环类型是while
循环;当您直到运行时才知道它将循环多少次迭代时使用它。Afor
实际上只是一个while
内置“便利”功能的循环。for
当迭代次数是可预测的常数或变量时使用 a。
while
通常,由于您认为会终止但实际上不会终止的循环条件,您更有可能永远陷入循环中。但我会根据上面指定的标准选择循环类型。
for(;expression;){/*code*/}
并且while(expression){/*code*/}
都只是伪装成这样:
if (expression is false) goto END;
BEGIN:
//code here
if (expression is true) goto BEGIN;
END:
do{/*code here*/}while(expression);
更像是这样:
BEGIN:
//code here
if (expression is true) goto BEGIN;
在汇编中,这些都由跳转和标签组成。一个主要的区别是 for 循环如何通过将循环的所有重要控制特征组合在一起来帮助代码的简洁性和可读性,特别是 init、condition 和 increment 都放在一起,这样的 while 循环如下:
i=0;
j=size;
while(i < j){
//possibly lots of code in between
i++;
j--;
}
会成为
for(i=0,j=size; i<j; i++,j--){
//code
}