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 所有while循环是否可转换为for循环?_Loops_Linked List_Navigation - Fatal编程技术网

Loops 所有while循环是否可转换为for循环?

Loops 所有while循环是否可转换为for循环?,loops,linked-list,navigation,Loops,Linked List,Navigation,早些时候,我认为在使用链表时不能使用for循环。。。但是 for(current=head;current!=NULL;current=current->next) 这句话让我思考。all while循环是否可转换为for循环,特别是当存在多个条件时?在本例中,您可以使用for循环,因为您要迭代特定次数(列表中的每个项目一次)。这不是超直观的,但最纯粹的编程相关,您可以设法从纯真/假运行条件更改为有界可数运行条件 如果涉及任何数量的硬件,这种思路很快就会崩溃。假设你有一个程序,只要你按下一个按钮

早些时候,我认为在使用链表时不能使用for循环。。。但是
for(current=head;current!=NULL;current=current->next)

这句话让我思考。all while循环是否可转换为for循环,特别是当存在多个条件时?

在本例中,您可以使用for循环,因为您要迭代特定次数(列表中的每个项目一次)。这不是超直观的,但最纯粹的编程相关,您可以设法从纯真/假运行条件更改为有界可数运行条件

如果涉及任何数量的硬件,这种思路很快就会崩溃。假设你有一个程序,只要你按下一个按钮,它就会打开一个LED

while(按钮按下)
{
发光二极管=开启;
}

像这样的事情,你不想使用for循环,因为当你停下来的时候,没有办法计数,时间是由按下按钮的人决定的,直到它真正发生,计算机才知道


TL;DR:你可以用for循环来处理很多不直观的事情。但是您不能使用它们来替换所有可能的while循环。

我的代码中的一些代码示例,使用
while
,我不会用
for
替换它

public function generateUniqueTokenForEntity(){
    while (true) {
        $token = substr(md5(uniqid()), 0, 10);
        $entry = $databaseTable->findEntryByToken($token);
        if ($entry === null) {
             return $token;
        }
    }
}

是的,可以在while循环中写入的任何内容都可以用for循环表示。它们都是入口控制循环,这意味着它们首先检查条件,然后执行主体

要使循环正常运行,我们至少需要一件事,即条件,最多需要3件事:

1. Initialization of the looping variable (If necessary)
2. Condition (Necessary)
3. Modification to the looping variable (If looping variable is initialized)
现在,我将提供一个包含while和for循环的简单代码块:

->打印从1到100的所有自然数。

使用While循环
inti=1//循环变量的初始化

虽然(以上内容可以简单地用if语句替换。不,不能。代码块的实际上下文将在一个中断中,当你按下一个按钮时会触发该中断,然后当按钮保持不动时,你会打开led,直接在这个代码块外,你会关闭led。假设该示例是lame和super sp具体来说,但这是准确回答问题的方法——所有的while循环都可以替换为for循环——如果你想打开led并让它保持打开状态,if就足够了。但是如果你想在按钮按下时打开它,否则你会使用while循环。for(;;)==while(true)。虽然(true)实际上没有任何检查条件,但它将永远运行,因为true始终为true。只需将所有说明符留空,即可实现for循环的相同“永远运行”行为。
int i=1; //Initialization of looping variable
while(i<=100) //Condition check
{
    cout<<i;
    i++; //Increament (Modification of looping variable)
}
for(int i=1;i<=100;i++)
//Here the first part to the for is initialization of looping variable.
// Second part is the Condition
// Third part is the increament
{
    cout<<i;
}
int i=1;//Initializing the loop variable
for(;i<=100;)//Condition
{
    cout<<i;
    i++;//Increament
}