c++ - 为什么 "defau4t"在 switch 语句中是合法的?

标签 c++ c switch-statement default

我在其他网站上提出了这个程序并想尝试一下,程序如下:

#include <stdio.h>
int main()
{
    int a=10;
    switch(a)
    {
         case '1': printf("one");
                   break;
         case '2': printf("two");
                   break;
         defau4t:  printf("none");
    }
    return 0;
}

令人惊讶的是,它编译时没有错误或警告。这怎么可能?关键字“default”没有错误吗?
谁能解释这种行为?

最佳答案

token 根本不被视为关键字。这是一个名为“defau4t”的 goto 跳转标记,指向否则为死代码(在 case '2':break; 之后).. .

试试这个笑(和一个无限循环):

switch(a)
{
     case '1': printf("one");
               break;
     case '2': printf("two");
               break;
     defau4t: printf("none");
     default: goto defau4t;
}

关于c++ - 为什么 "defau4t"在 switch 语句中是合法的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25868430/

相关文章:

c++ - 如何以编程方式防止 linux 计算机休眠或打开屏幕保护程序?

c++ - 使用移动语义将基类实例插入子类实例

c - 为什么这个冒泡排序有问题?

c# - 能否在 switch 语句中使用多个值 (C#)

ruby - 将日期转换为星期几

javascript - 严格比较在生产环境中未产生预期结果,但在本地服务器上运行良好

c++ - 类成员转换函数-id

c++ - 将字符串拆分为单个单词并将它们放入 vector 中

C:转换函数指针以编辑可执行代码

java - 在java中修改函数内部参数的干净方法是什么?