27

我有这个代码:

  #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
我想知道为什么编译器没有检测到这个语法错误。

4

3 回答 3

35

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

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

于 2012-07-03T16:36:27.827 回答
11

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

于 2012-07-03T16:37:58.713 回答
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
于 2012-07-03T19:05:34.820 回答