我在其他网站上提出了这个程序并想尝试一下,程序如下:
#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/