将变量与if语句中的值列表进行比较的更易读的方法是什么? [重复]

问题描述 投票:-1回答:2

这个问题在这里已有答案:

如何将变量与if语句中相同类型的值列表进行比较,并使其可读且干净?

例如,我有以下内容,但有很多值,我想让它更具可读性。

if ((lst->type == 'p' || lst->type == 'x' || lst->type == 'X' ||
    lst->type == 'o' || lst->type == 'O' || (lst->type == 'd' ||
    lst->type == 'i' || lst->type == 'D'))
c variables if-statement
2个回答
5
投票

使用strchr函数处理此问题的最简单方法:

const char *lookups = "pxXoOdiD";
if (strchr(lookups, lst->type)){ 
    // Do your thing here to handle the condition
}

有关strchr的更多信息,请参阅。

返回指向C字符串str中第一个字符出现的指针。


1
投票

使用查找表,或使用switch语句:

const char lookup[] = {'p', 'x', 'X', 'o', 'O', 'd', 'i', 'D'};
for (int i = 0; i < sizeof(lookup)/sizeof(*lookup); i++){
    if (lst->type == lookup[i]) {
        // Your stuff
        break; // Remember to break
    }
}
switch (lst->type) {
    case 'p': case 'x': case 'X': case 'o':
    case 'O': case 'd': case 'i': case 'D':
        // Your stuff
}
© www.soinside.com 2019 - 2024. All rights reserved.