这个问题在这里已有答案:
如何将变量与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'))
使用strchr
函数处理此问题的最简单方法:
const char *lookups = "pxXoOdiD";
if (strchr(lookups, lst->type)){
// Do your thing here to handle the condition
}
有关strchr的更多信息,请参阅。
返回指向C字符串str中第一个字符出现的指针。
使用查找表,或使用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
}