问是否有办法使用非常量case标签(例如范围或任意表达式)吗?
答没有。该switch语句最初被设计得非常简单,以便编译器进行翻译,因此 case 标签仅限于单个、常量、整型表达式。您可以将多个 case 标签附加到同一个语句上,如果您不介意明确列出所有 case,这可以让您覆盖一小段范围。
如果您想选择任意范围或非常量表达式,您将不得不使用一个if/else链。
参考文献:K&R1 第 3.4 节,第 55 页
K&R2 第 3.4 节,第 58 页
ISO 第 6.6.4.2 节
Rationale 第 3.6.4.2 节
H&S 第 8.7 节,第 248 页