gpt4 book ai didi

c++ - 使用枚举成员值检查变量值的优化方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:25:46 24 4
gpt4 key购买 nike

您好,我有以下代码:

enum {a, b, c, d, ..., z} abc;

int main()
{
int val = 20;
if (val == a || val == b ||val == c||val == d..... || val == z)
{
/*Do something*/
}
}

有没有其他方法可以跳过 OR 操作,因为如果有 1000 个枚举成员,那么我们如何提前检查所有成员。请帮忙。

最佳答案

现代编译器应该能够优化这样的代码,就像你的情况一样,表达式的值在编译时是已知的。对于可读性和错误检查,我认为使用 switch 会更好:

switch (val)  {
case a:;
case b:;
....
// your code goes here
}

如前所述,在性能方面应该没有太大区别,编译器会在适当的时候将其转换为表查找(或其他聪明的东西),或者如果 val 已知,则完全优化它编译时间。

但是您可以在这里享受错误检查编译器的优势。如果您没有default 大小写,那么如果您省略其中一个枚举常量,大多数编译器都会警告您。此外,我认为这更清楚,因为它不会在整个地方重复 val 的评估。

关于c++ - 使用枚举成员值检查变量值的优化方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12928733/

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