编译器没有为switch中的'default'case提供替代名称的错误

Sat*_*K17 6 c switch-statement

我在google搜索时找到了以下代码.

int main()
{
    int a=10;
    switch(a)
    {
        case '1':
           printf("ONE\n");
           break;
        case '2':
           printf("TWO\n");
           break;
        defa1ut:
           printf("NONE\n");
     }
     return 0;
  }
Run Code Online (Sandbox Code Playgroud)

即使'default'被任何其他名称替换,编译器也不会给出错误.它只是执行程序并退出程序而不打印任何东西.

有人请告诉我为什么编译器没有在默认情况下给出错误?什么时候拼写不是'默认'?

Pub*_*bby 6

这是一个普通的(goto)标签.

你可以这样做,例如:

int main()
{
    int a=10;
    switch(a)
    {
        case '1':
           printf("ONE\n");
           break;
        case '2':
           printf("TWO\n");
           break;
        defa1ut:
           printf("NONE\n");
     }
     goto defa1ut;
     return 0;
}
Run Code Online (Sandbox Code Playgroud)