以下是Dennis M Ritchie的书ANSI C的摘录:



我无法拿出一个开关案例的例子,在这个案例中,我们的案例带有多个标签

说明上述属性的任何示例都将有所帮助。

最佳答案

这是我在检查选项的程序中找到的示例:

switch (optionChar) {
    case 'a': case 'A':
    case 'f': case 'F':
    case 'q': case 'Q':
    case 'z': case 'Z': optionsOk = TRUE;  break;
    default:            optionsOk = FALSE; break;
}

这可能不是我编写代码的方式(a),但肯定是有效的。当使用case产生的代码比需要较长动作的||长连词短时,通常会使用它:
if (optionChar == 'a' || optionChar == 'A' || ...

而且,实际上,K&R本身在您引用的报价后面有一个示例。它在用于计数不同字符类的代码中:
while ((c = getchar()) != EOF) {
    switch (c) {
    case '0': case '1': case '2': case '3': case '4':
    case '5': case '6': case '7': case '8': case '9':
        ndigit[c-'0']++;
        break;
    case ' ': case '\n': case '\t':
        nwhite++;
        break;
    default:
        nother++;
        break;
    }
}

(a)我可能会按照以下方式做一些事情:
optionsOk = (strchr("aAfFqQzZX", optionChar) != NULL);

关于c - C开关情况下的多个标签值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51796397/

10-13 05:54