c++ - 在带有排除 C++ 的 switch 案例中使用范围

标签 c++ gcc

gcc 中有一个扩展允许在 switch case 语句中使用“range”。

case 'A' ... 'Z':

允许判断字符在 A 到 Z 范围内的任何位置。
是否可以在这样的范围语句中进行“排除”?例如,假设我希望我的案例捕获除“G”和“L”之外的所有字符 A-Z。

我知道一个简单的解决方案是处理 A-Z 大小写正文中的特殊字符,但如果存在上述解决方案我更愿意

最佳答案

char c = /* init */;

switch(c)
{
case 'A' ... ('G'-1):
case ('G'+1) ... ('L'-1):
case ('L'+1) ... 'Z':
    /* some code */;
}

但我猜是

a simple solution ... to handle the special characters within the body of the A-Z case

会比上面的代码好得多。

关于c++ - 在带有排除 C++ 的 switch 案例中使用范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54372688/

相关文章:

c++ - 如何在Mac上使用C++创建图形

c++ - 如何在应用程序关闭时通过套接字从 DLL 发送消息?

c++ - 具有固定步长的 ode 求解器

c++ - 交换内存块

嵌套循环中的 C++ 变量重新声明

c - GCC x86-64 次优汇编输出,为什么?

c++ - Arm GNU 编译器 : Assembly generated from ternary optimized by superfluous cast

linux - STASM-ASM 在 Linux 中不工作

c++ - gcc:缺少有关构造函数中初始化顺序的警告

c++ - 在使用动态共享内存分配的情况下正确的内核调用