gpt4 book ai didi

c++ - 切换 if-else 语句的优势

转载 作者:IT老高 更新时间:2023-10-28 11:30:06 26 4
gpt4 key购买 nike

对于 30 个 unsigned 枚举,使用 switch 语句与使用 if 语句的最佳实践是什么,其中大约 10 个具有预期操作(目前是相同的 Action )。需要考虑性能和空间,但并不重要。我已经抽象了这段代码,所以不要因为命名约定而讨厌我。

switch 语句:

// numError is an error enumeration type, with 0 being the non-error case
// fire_special_event() is a stub method for the shared processing

switch (numError)
{
case ERROR_01 : // intentional fall-through
case ERROR_07 : // intentional fall-through
case ERROR_0A : // intentional fall-through
case ERROR_10 : // intentional fall-through
case ERROR_15 : // intentional fall-through
case ERROR_16 : // intentional fall-through
case ERROR_20 :
{
fire_special_event();
}
break;

default:
{
// error codes that require no additional action
}
break;
}

if 语句:

if ((ERROR_01 == numError)  ||
(ERROR_07 == numError) ||
(ERROR_0A == numError) ||
(ERROR_10 == numError) ||
(ERROR_15 == numError) ||
(ERROR_16 == numError) ||
(ERROR_20 == numError))
{
fire_special_event();
}

最佳答案

使用开关。

在最坏的情况下,编译器将生成与 if-else 链相同的代码,因此您不会丢失任何内容。如果有疑问,请将最常见的情况放在 switch 语句中。

在最好的情况下,优化器可能会找到更好的方法来生成代码。编译器所做的常见事情是构建二叉决策树(在一般情况下保存比较和跳转)或简单地构建一个跳转表(根本不进行比较)。

关于c++ - 切换 if-else 语句的优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/97987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com