"defau1t:"(不是"默认值:")是标签的有效值?

nik*_*shi 9 c c++

为什么这段代码编译运行正常.我在l的地方写了defau1t而不是默认值1.

#include<stdio.h>
int main()
{
    int i=4;
    switch(i)
    {
        case 3:
        break;
        defau1t :
        break;      
    }
}
Run Code Online (Sandbox Code Playgroud)

Bo *_*son 8

defau1t : 是有效的标签名称,即使它不是案例标签.

你可以goto defau1t;在代码中的其他地方.


Bat*_*eba 7

它是标签的有效名称,您可以将其用作goto呼叫的占位符.(switch通过goto调用进入一个块允许的C和C++,即使它是不明智的).

当涉及到它们可以包含的字符时,标签名称与变量名称的规则大致相同.defau1t满足那些规则.

在你的情况下,它是良性的,将在运行时编译出来,虽然一个好的编译器会警告你它没有被使用.