C switch语句中的随机标签不会导致错误

时间:2012-08-31 12:17:41

标签: c switch-statement

  

可能重复:
  Default case in a switch condition

我可以编译此代码而不会遇到任何错误。我认为应该有一个错误,因为switch语句中有assadfsd

为什么编译失败?

#include <stdio.h>

int main(void)
{
    int choice =0;
    scanf("%d",&choice);

    switch(choice)
    {
        case 1 :
            printf("Case 1\n");
            break;                           
        assadfsd :
           printf("Error\n");                                 
    }  

    return 0;
}

2 个答案:

答案 0 :(得分:7)

它被称为label

e.g

 start:
     /*statements*/

答案 1 :(得分:1)

switch语句的语法是:

switch ( expression ) statement

所以你可以把你想要的任何陈述而不是“陈述”。在这里你使用了一个标签,它是C标准所允许的。所以你的编译器应该编译代码而不会出错。

例如,您可以使用goto语句来使用此标签。

#include <stdio.h>

int main(void)
{
    int choice = 1;
    goto assadfsd;

    switch (choice) {
    case 1:
        printf("Case 1\n");
        break;
    assadfsd:
        printf("Error\n");
    }

    return 0;
}