我观看了一段来自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
的优势是什么?
答案 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;
}