切换条件下的默认情况

时间:2012-07-03 16:35:29

标签: c

我有这段代码:

  #include<stdio.h>                                   
  int main()
  {   
      int a=10;
      switch(a)
      {   
      case '1':
          printf("ONE\n");
          break;
      case '2':
          printf("TWO\n");
          break;
      defalut:
          printf("NONE\n");
      }   
      return 0;
  }

该程序不打印任何内容,甚至不打印NONE。我发现default有一个拼写错误defalut! 我想知道为什么编译器没有检测到这种语法错误。

3 个答案:

答案 0 :(得分:35)

defalut只是程序中的一个标签,您可以使用goto跳转到该标签。拥有一个突出显示关键字的编辑器可能会使这个错误更容易被发现。

我还应该注意你的程序可能有一些逻辑错误。字符'1'1不同,与'2'2相同。

答案 1 :(得分:11)

这不是语法错误。 defalut是有效标签,可能是goto的目标。

答案 2 :(得分:8)

提示:如果您使用的是gcc,请添加选项-pedantic。它会警告你未使用的标签:

$ gcc -ansi -Wall -pedantic test.c -o test
test.c: In function ‘main’:
test.c:14:10: warning: label ‘defalut’ defined but not used