我有这段代码:
#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
!
我想知道为什么编译器没有检测到这种语法错误。
答案 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