如果条件,while循环的优点

时间:2018-04-09 14:13:23

标签: bash

我观看了一段来自YouTube的Linux视频,其中建议使用while循环而不是if条件: The mind behind Linux

我尝试从新手角度理解它:

if分行代码:

count=1
if (( count >= 0 )); then
    echo "$count ge 0."
fi

while循环代码:

count=1
while (( count >= 0 )); 
do   
    echo "$count ge 0."
    break
done

他们产生了相同的结果,但while似乎更复杂。

while优于if的优势是什么?

1 个答案:

答案 0 :(得分:2)

在那段视频中,Linus没有声称while循环比ifs好,绝对不是你的简化示例。

这是关于在可能的情况下通过使用指针和循环来消除if()(或分支)。

“丑陋”的代码:

remove_list_entry(entry)
{
    prev = NULL;
    walk = head;

    while (walk != entry) {
        prev = walk;
        walk = walk->next;
    }

    if (!prev)
        head = entry->next;
    else
        prev->next = entry->next;
}

“干净”的代码:

remove_list_entry(entry)
{
    indirect = &head;

    while ((*indirect) != entry)
        indirect = &(*indirect)->next;

    *indirect = entry->next;
}