你好,我有以下代码:
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*/
}
}
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以跳过OR操作,因为如果有1000个枚举成员,那么我们如何才能提前检查所有成员.请帮忙.
如果在编译时已知表达式的值,则现代编译器应该能够优化此类代码.为了便于阅读和错误检查,我认为使用a switch会更好:
switch (val) {
case a:;
case b:;
....
// your code goes here
}
Run Code Online (Sandbox Code Playgroud)
如上所述,性能方面不应该有太大区别,如果适当的话,编译器会将其转换为表查找(或其他聪明的东西),或者如果val在编译时已知,则将其完全优化.
但是,您可以在此处获得错误检查编译器的优势.如果您没有default案例,大多数编译器会在您省略其中一个枚举常量时发出警告.此外,我认为这更清楚,因为它不会重复val所有地方的评估.
| 归档时间: |
|
| 查看次数: |
3202 次 |
| 最近记录: |